在 cli c++ 项目的本机类的非静态函数中,我将新的内存空间分配给对象的 2 个字段:
Name = new wchar_t[50];
Type = new wchar_t[50];
其中 Name 和 Type 声明为:
class MyClass
{
...
whcar_t *Name;
whcar_t *Type;
...
}
问题是分配内存后,Name 和 Type 字段指向同一个内存。如何修复?
更新:
我投的每一个新的地址都返回相同的地址。返回与!new SomeClass()
相同的指针 new wchar_t[50]
它可能与cli项目中分配本机内存的一些错误有关吗?
更新 2
内存分配不适用于 malloc、calloc、new 运算符,但可以使用 LocalAlloc 和静态分配(如wchar_t Name[50]
. 据我了解,很难找到分配错误的原因,但我什至不知道,这是什么迹象?正如@Hans Passant 所说,堆损坏?或者它可能是操作系统故障或某种自定义 AutoCad 内存分配的错误?有没有办法在当前代码行上找到用于分配内存的堆?
我正在使用 MS Visual Studio 2008 SP1。
将对象初始化从基于堆栈替换为堆解决了这个问题。