自定义编辑控件的内存分配的最佳方式?

时间:2011-11-11 20:52:29

标签: c++ memory

我正在编写一个自定义编辑控件(C ++ / Win32),并且已经运行了基本功能。

  • 我使用c风格的缓冲区来存储编辑控件中可见文本的内容。现在,我想知道是否应该使用malloc/free组合来分配内存 堆,还是应该继续使用new/delete对?
  • 前几天我遇到了一个问题。我动态创建了一个 已分配的c-style字符串类成员(char* szClassName)。然后我 在初始化列表中将其初始化为
    szClassName("name of class")

    当我在析构函数中使用'delete szClassName'时,它会导致 一些内存分配错误。你能告诉我这个问题吗 这里吗?

最后,你们能否给我一些你在自己的编程企业中发现有用的内存管理技巧?

谢谢,

Devjeet!

1 个答案:

答案 0 :(得分:2)

  

我创建了一个动态分配的c-style字符串类成员(char* szClassName)。然后我在初始化列表中将其初始化为   szClassName("name of class")

不,你没有。首先,您为char创建了一个指针。然后使用静态文字字符串常量“类的名称”(编译器将在目标文件的只读数据段中分配)的地址初始化指针。

因此,当你的析构函数调用delete szClassName时,你试图在只读数据段中释放一块内存,而不是一个已经用new动态分配的内存块(因此错误)。