ヒープに 2 つのアイテムがあるとします。
Foo *f = new Foo;
Foo *g = new Foo[42];
そして、ポインターを受け取る関数がありFoo
、その関数内で次を実行する必要があるとしますdelete
。
void bar(Foo *p) {
// some stuff
delete p;
}
この関数は、次のように呼び出すことができます。
bar(f); // passing a pointer to a Foo object on the heap
bar(g); // passing a pointer to an array on the heap
とで割り当てられたメモリをそれぞれ解放するために と を使用する必要があることdelete[]
を認識しています。ただし、関数は、そのパラメーターがまたはで割り当てられているかどうかを認識していないため、どのようにこの関数を適切に機能させることができますか?delete
new[]
new
p
new
new[]
delete
delete[]