Lin*_*ing 3 c++ new-operator dynamic-memory-allocation delete-operator
我不明白是什么delete意思.
例如,在下面的代码,delete ptr;所以pointer variable ptr被删除或the memory ptr pointed to删除?
int *ptr = new int;
*ptr = 7;
delete ptr;
Run Code Online (Sandbox Code Playgroud)
Dan*_*_ds 11
所以删除指针变量ptr或删除指向的内存ptr?
内存指出,由ptr被删除(即标记为空闲-取决于implemetation内存可能具有一定的图案被覆盖以及内容可能仍然存在,但正如@JonTrauntvein还提到, -它应该永远之后访问删除).
指针本身不会改变并且仍然包含相同的值(即它指向的内存地址),但是删除后将指针置零是一个好习惯,即ptr = NULL;.
这个内存是在堆上分配的,new int并且应该总是被释放delete.
int *ptr = new int;
Run Code Online (Sandbox Code Playgroud)
- >在堆上分配内存 - 数量:sizeof(int)- ptr指向该内存位置.
*ptr = 7;
Run Code Online (Sandbox Code Playgroud)
- >将值7放在分配的内存中.
delete ptr;
Run Code Online (Sandbox Code Playgroud)
- >已分配的内存(包含7)被删除(即标记为免费用于其他用途).prt仍然指向释放的内存位置.访问它是无效的,因此指针应设置为NULL.