C++ 如何使用xcode在mac osx上删除字符*数组?
当我试图在Xcode 5.0.2中删除一个字符数组时,出现了一个调试错误,但在Xcode 3.0.2中成功删除了这个字符数组 如果它在任何地方被成功删除,那就是一个bugC++ 如何使用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
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()
就可以了