我正在尝试理解释放指向的内存的正确方法。在这种情况下,指针指向结构的新实例。一个例子如下所示
结构是这样的:
struct MyData
{
unsigned short int MYID;
unsigned short int MYCMD;
};
定义如下。
MyData* injdataRx;
myDataPtr = new MyData; // create new instance
...做一些将值加载到指针指向的东西,即。田野。
现在,如果当我完成该结构并且我想确保指针指向的位置(已分配的区域)被释放时,我会这样做。
delete (myDataPtr);
这是否释放了由“new”创建的内存,因为它知道由于myDataPtr是一个指向MyData类型的指针,它将释放myData的大小?这是怎么回事?
任何帮助澄清这一点都表示赞赏。
答案 0 :(得分:1)
是的。基本上,当您调用new时,分配的字节数会记录在某处(这不是标准所指定的,并且取决于实现)。无论如何,当你调用delete时,会引用这个字节数,这就是系统知道要释放多少字节的方法,即使你没有告诉它。簿记是在幕后完成的。
答案 1 :(得分:0)
正如ildjarn和Duck在评论中已经说过,答案是肯定的。
MyData * p;
p = new MyData;
delete (p); // <- Yes, this frees the memory used for MyData.