へのポインタを設定する動的に割り当てられた変数を削除:私はこのコード(<code>array = 0;</code>)の端部を理解することはできません0
#include <iostream>
int main()
{
std::cout << "Enter a positive integer: ";
int length;
std::cin >> length;
int *array = new int[length];
std::cout << "I just allocated an array of integers of length " << length << '\n';
array[0] = 5; // set element 0 to value 5
delete[] array; // use array delete to deallocate array
array = 0; // use nullptr instead of 0 in C++11
return 0;
}
終了時に、動的に割り当てられたアレイを削除(OSに戻し)、その後、割り当てられています0の値。
これはなぜですか?配列がOSに返された後は、値0を割り当てる必要はありません。
コード:ポインタがNULL
に設定されているように、これが行われhttp://www.learncpp.com/cpp-tutorial/6-9a-dynamically-allocating-arrays/
ダングリングポインタを持たないようにするために、有効なポインタ(ただしNULL)を配列に設定します。だから、後で 'array'をテストしてから使用することができます。ポインタが使用されなくなった場合は、実際には不要になります。 – Jarod42
int *配列は、ポインタとして、オブジェクトの割り当てが解除されていても、指し示されたアドレスに関する情報を保持します。その空間はもはやそのポインタに属していないので、ランダムなデータにアクセスできないように0に設定します。 – metamorphling
'std :: vector'を使うと、それらの手動メモリ管理を避けることができます。 – Jarod42