为什么在下面的代码中delete(pcResult);
rices异常?
void strange(char *pcResul)
{
CString pss ="123";
strncpy (pcResul,(LPCTSTR)pss,3);
}
void Dlg::OnBnClickedUser()
{
char *pcResult = new char (10);
strange(pcResult);
delete(pcResult);
}
最佳答案
您只分配一个字符;然后您对其进行写入,并在其后写入两个字节的内存,从而产生不确定的行为。
如果您想分配一个十个字符的数组,那么
char *pcResult = new char[10];
并且需要作为数组删除
delete [] pcResult;
但是,除非这是学习低级内存恶作剧的练习,否则请使用
std::string
表示字符串。关于c++ - 使用字符串存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23299088/