我正在尝试了解释放指向的内存的正确方法。在这种情况下,指针指向结构的新实例。示例如下所示
结构是这样的:
struct MyData
{
unsigned short int MYID;
unsigned short int MYCMD;
};
定义如下。
MyData* injdataRx;
myDataPtr = new MyData; // create new instance
...做一些事情,将值加载到指针指向的地方,即。字段。
现在,如果当我完成该结构并且我想确保释放指针指向的内容(分配的区域)时,我会这样做。
delete (myDataPtr);
这是否会释放由“new”创建的内存,因为它知道因为 myDataPtr 是指向类型 MyData 的指针,所以它将释放 MyData 的大小?是这样吗?
感谢任何澄清这一点的帮助。
最佳答案
是的。基本上,当您调用 new 时,分配的字节数会记录在某处(这不是标准指定的,并且取决于实现)。无论如何,当您调用 delete 时,会引用这个字节数,这就是系统如何知道要释放多少字节,即使您没有告诉它。簿记是在幕后完成的。
关于c++ - 删除指针指向的结构中数据的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9304169/