c++ - 删除指针指向的结构中数据的正确用法

标签 c++ pointers delete-operator

我正在尝试了解释放指向的内存的正确方法。在这种情况下,指针指向结构的新实例。示例如下所示

结构是这样的:

    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/

相关文章:

c++ - push_back Mat in another Mat时访问违规读取位置

c++ - STL 映射因 mpz_class (GMP) 值而损坏

c - 返回一个字符指针数组

c++ - 删除指针 vector 时遇到问题

java - jni 无法从 native 库中找到方法?

c++ - 为什么在类主体中不可能初始化静态常量字符串成员

c - 解释一下这段代码的程序的输出?

c - 指向结构和打印的指针

c++ - delete 一定是析构函数中的最后一条语句吗?

c++ - 删除在另一个共享库中分配的指针