c++中new分配的内存能否使用free释放?
大家讲道理
大家讲道理 2017-04-17 14:30:10
0
5
770

c++中new和free可以结合使用吗?

如下例,我new一个char数组,使用free释放,会不会造成生成什么安全问题?

代码可以编译运行,谢谢各位大神指点。

char * ch = new char[10];
for (int i = 0; i < 10; i++) 
{
    ch[i] = '0' + i;
}
free(ch);
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(5)
阿神

newdelete必須成對的使用,不能和malloc|free混合使用,
你那麼寫可能對於基本型別是沒有問題的,但是一旦設涉及到構造函數與析構函數就不行了,養成習慣是非常重要的,
而且標準庫貌似沒有規定new一定要使用malloc來實現,所以new的東西還是需要delete,而不是free

大家讲道理

delete更好

用free有可能new出來的物件未執行析構函數而可能導致程式出錯

迷茫

不建議這樣使用,還是new/delete ,malloc/free搭配使用

刘奇

因為C++標準沒有要求new的記憶體分配是由malloc分配的,雖然有些C++實作是這麼做的,但是並不是所有的。而且new運算元是可以重載的,可以寫自訂的記憶體分配程式碼,這種情況肯定不能free。另外對於new的類別對象,不可以呼叫free釋放,因為析構函數不會被呼叫。

巴扎黑

首先:new和delete底層使用malloc和free實作的
其次:當是基本的資料型別時,delete和delete[]可以混用
用free也可以釋放new出的空間,但是new []的有時候就不行
重點是最好還是不要混用

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!