class A {
struct structA;
}
别的地方:
structA* structAPointer = new structA;
遥远的土地:
void Wonderland::rabbitHole(structA* structAPointer) {
delete structAPointer;
}
删除运算符是否释放在“其他地方”中分配的原始内存?
class A {
struct structA;
}
别的地方:
structA* structAPointer = new structA;
遥远的土地:
void Wonderland::rabbitHole(structA* structAPointer) {
delete structAPointer;
}
删除运算符是否释放在“其他地方”中分配的原始内存?
分配它删除的代码的哪一部分delete
无关紧要new
whiledelete []
用于由new []
.
但是通常您希望创建它的部分负责删除它,以便更轻松地管理内存。
删除运算符是否释放在“其他地方”中分配的原始内存?
是的,如果原始文件 structAPointer
从未被修改过并且正在传递给rabbitHole
.
该delete
运算符处理保存指针的变量的值(地址),因此实际上有任何东西阻止您在您动态分配的rabbitHole
任何东西上使用。structA*
就是说,尽管如此,C++ 社区非常不鼓励使用new
and delete
(或new[]
and ) 。有很多替代方法可以处理动态分配的内存,这些方法被证明效果更好。例如,该库包含一组非常好的实用程序来帮助您管理动态内存,而无需自己处理指针。delete[]
std