c – 删除或指定零指针
作者:互联网
在代码中的什么情况下,我们应该删除一个给定的指针,在哪里我们最好为它指定零,而不是删除?
解决方法:
In what situations in the codes, should we delete a given pointer and
where had we better assign zero to it, instead of deleting?
如果使用new创建指针,则删除指针.实际上,您正在删除指针指向的对象,而不是指针本身.虽然语法允许你写删除ptr确实.但删除的是ptr指向的地方.不是ptr.
将nullptr分配给指针,如果之前没有删除,则无效 – 实际上丢失了指针指向的对象地址并创建了内存泄漏(当然,如果没有其他指针指向原始指针)宾语).例如这是不好的:
double* pvalue = new double;
..
pvalue = nullptr; // Bad - pointer to original memory is lost now
delete pvalue; // What should I delete?
因此,如果您使用new创建对象,则需要在将nullptr分配给指针之前将其删除.
因此删除后可以将nullptr分配给指针.
所有这些都表示你需要考虑是否真的需要在代码中进行动态内存分配(例如new).
标签:c,pointers,new-operator,delete-operator 来源: https://codeday.me/bug/20190823/1694613.html