重複の可能性:
delete []はどのようにしてオペランド配列のサイズを「認識」しますか?
C ++での削除は、削除するメモリ位置の数をどのように知るのですか?
私はそれがかなり単純な質問であることを知っていますが、この行の違い(もしあれば)についてはわかりません:
double * a = new double[100];
delete[] a;
delete a;
free ((void*)a);
まず、これらの呼び出し(それぞれが他の呼び出しなしで使用される)はすべて同じように機能し、sizeof(double)* 100バイトを解放しますか?2番目の質問に私を導きます、プログラムはどのように割り当てられたメモリのサイズを追跡しますか?たとえばa
、関数へのポインタを送信した場合delete[]
、関数内からこのポインタを送信すると、同じ量のメモリも解放されますか?
ありがとう