为什么在下面的代码中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/

10-11 16:19