read 'effective c++'. there is a quite detailed explanation about the memory allocation/releasing mechanism. though i can remember which rule it is in?
在C++中用new来分配内存,用delete来释放内存。
C++程序中,局部变量是储存在栈中的,而动态分配的内存是储存在堆中。当使用int *i = new i(9);时操作系统会在内存中分配一个单元来储存这个变量,单元的大小根据操作系统的位数来决定,(16位系统中为2,32位系统中为4),这个储存单元一直到你用delete之前都是存在的,当你使用delete i后,这段内存才被释放。
使用数组时应这样使用delete;
int * d[3] = new d[];
delete []d;
当使用delete后尽量将指针设为空指针。
int * i = new i(9);
delete i;
i = 0;