-
我们使用new分配的内存空间,如果我们不使用delete释放,那么内存是不会自动释放的,这样就会造成内存空间的泄露。如果这样的情况比较多,那么会造成系统的内存空间逐渐枯竭,从而导致程序的崩溃。
-
举例:
-
分配一个内存空间
int *n = new int; *n = 123;
-
释放
delete n;
-
-
注意
-
delete只能释放使用new分配的内存空间,不能释放malloc以及类似的函数分配的内存空间
-
对于普通变量,例如
int xyz = 100;
之类的,当程序结束后,它所占用的内存空间将由系统自动回收,这类变量储存在栈上;而由我们动态分配的内存空间储存在堆上,需要我们手动释放。 -
delete以后,指针本身和指针指向的内存空间的数据不会被清空,除非再次写入数据。
-
释放内存后的指针所指向的内存空间我们仍然可以赋值,但是具有一定的危险性,因为这段空间随时可能被其他所占用,所以尽量不要这样用。
-
int *xyz = 500; *n = 456;//尽量不要这样用,原因如上 *n = &xyz//这个是没有问题的,xyz储存在栈上,程序结束前将一直占用该内存空间
-
有多个指针指向了相同的内存空间,只要释放一个,其他的也会释放。
-
对于已经释放了的指针所指向的内存空间,不能再次释放。
-
3-22使用delete释放内存空间
最新推荐文章于 2024-07-21 03:06:02 发布