大きなコードの途中にこの小さなコードがあります。
int *p = new int[100];
p += 50;
delete []p;
コンパイラは 51番目の場所からメモリのみを削除しますか? そうだと思います。ただし、配列ポインターの場合、コンパイラーは、割り当てられたオブジェクトの数を示す追加の項目を保持します。では、その場合、割り当てられたサイズを超えてメモリを削除するべきではありませんか? または、51 ~ 100番目の要素を削除し、1 ~ 50番目の要素をメモリに保持しますか。この場合、メモリ リークが発生する可能性があります。