C++ 如何使用xcode在mac osx上删除字符*数组?

C++ 如何使用xcode在mac osx上删除字符*数组?,c++,C++,当我试图在Xcode 5.0.2中删除一个字符数组时,出现了一个调试错误,但在Xcode 3.0.2中成功删除了这个字符数组 如果它在任何地方被成功删除,那就是一个bug int nSize; QString str; char *p = new char[nSize]; p = str.toLocal8bit.data(); delete[] p; 到目前为止还不错。p是一个字符数组 char* p = new char[nSize]; p现在指出(大概)来自str.toLocal8

当我试图在Xcode 5.0.2中删除一个字符数组时,出现了一个调试错误,但在Xcode 3.0.2中成功删除了这个字符数组

如果它在任何地方被成功删除,那就是一个bug

int nSize; 
QString str; 
char *p = new char[nSize]; 
p = str.toLocal8bit.data();
delete[] p;
到目前为止还不错。p是一个字符数组

char* p = new char[nSize];
p现在指出(大概)来自str.toLocal8bit的一些基础数据。您现在无法引用刚才分配的内存

p = str.toLocal8bit.data();

您现在已删除了其他对象的内存。

如果在任何位置成功删除了该对象,则这是一个错误

int nSize; 
QString str; 
char *p = new char[nSize]; 
p = str.toLocal8bit.data();
delete[] p;
到目前为止还不错。p是一个字符数组

char* p = new char[nSize];
p现在指出(大概)来自str.toLocal8bit的一些基础数据。您现在无法引用刚才分配的内存

p = str.toLocal8bit.data();
您现在删除了其他对象的内存。

delete[] p;
覆盖从
new
获取的指针。当您删除
p
时,您正在删除您无法控制的内存

如果确实需要字符串数据的副本,可以使用
memcpy
strcpy
将字符串复制到数组中(而不是赋值)

如果您实际上不需要副本,您可以:

p = str.toLocal8bit.data();
线路

delete[] p;
覆盖从
new
获取的指针。当您删除
p
时,您正在删除您无法控制的内存

如果确实需要字符串数据的副本,可以使用
memcpy
strcpy
将字符串复制到数组中(而不是赋值)

如果您实际上不需要副本,您可以:

p = str.toLocal8bit.data();

你是有意使用C++吗?最好在这样的问题中用标记标记语言。我不明白为什么要使用
QString
将其内容复制到
char*
并在启动
QString
时处理该内存。如果某个函数需要一个<代码> char */COD>,那么使用<代码> qSn::ToCalal8BIT()/Cuth>,您应该好好地使用C++吗?最好在这样的问题中用标记标记语言。我不明白为什么要使用
QString
将其内容复制到
char*
并在启动
QString
时处理该内存。如果某个函数需要一个
char*
,那么使用
QString::toLocal8Bit()
就可以了