(一)C++入門——指針與數組——Expression: _CrtIsValidHeapPointer(Block)


最近在入門c++,在看《c++ Primer Plus》一書。書中P106提到,刪除使用New創建的數組時,是將指針重新指到第一個元素后,再進行的刪除操作。代碼如下:

int *ptest = new int[3];

ptest[0]=1;

ptest[1]=2;

ptest[2]=3;

cout<<"*ptest "<<*ptest<<endl;

ptest = ptest+1;//此時指針指向第二個元素,也即:ptest[1]

cout<<"*ptest "<<*ptest<<endl; //這里輸出 2

delete [] ptest; //NOT OK .若是此時進行刪除分配的內存,將會報Expression: _CrtIsValidHeapPointer(Block)

delete [] (ptest-1);//OK  地址-1后,將返回第一個元素所在的地址。 或者說,delete 操作符作用於數組時,傳遞的參數必須是數組開始的地址

//備注:這個報錯是否說明,刪除new分配的數組內存時,必須需要指針是指向第一個元素呢?

知識點:

1、使用New分配的內存空間,必須要使用delete進行回收


免責聲明!

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



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