new和malloc的區別


概述

1. new是C++提供的一個用於內存分配的運算符,而malloc是C語言提供的一個用於內存分配的庫函數

2. new運算符可以自動計算出所需內存空間占用的字節大小,無需用戶手動計算,而malloc需要用戶提供需要的字節數

3. new運算符返回的是指定類型的指針,而malloc庫函數返回的是void *類型的指針,需要用戶使用強制類型轉換手動轉換

4. new運算符所做的工作比malloc更多,new的底層實現實現是計算出所需要內存的字節大小,然后調用operator new庫函數,而operator new庫函數底層實際調用的是malloc庫函數,完成內存分配后,如果是一個類,還會調用該類的相應的構造函數即new運算符可以完成內存分配和初始化的操作

5. operator new的原型是void * operator new (size_t size)其中返回值的類型為void *不能隨意更改為int *等,同時第一個參數必須是size_t類型,否則就會報錯,可以在第一個參數后增加其他參數

6. 從5中可以看出,operator new運算符返回的是void *類型的指針,因此將void *類型的指針轉為特定類型的指針是由new運算符完成的

7. new分配的內存需要使用delete運算符進行釋放,而malloc分配的內存則需要使用free庫函數進行釋放

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM