char *pstr = new char[1];
char *pstring = "hello ET,welcome to our earth.";
::memcpy(pstr,pstring,5);
CString str;
str = pstr;
AfxMessageBox(str);
delete [] pstr;
pstr = NULL;
以上代码str变量中可以输出hello.
char *pstring = "hello ET,welcome to our earth.";
::memcpy(pstr,pstring,5);
CString str;
str = pstr;
AfxMessageBox(str);
delete [] pstr;
pstr = NULL;
以上代码str变量中可以输出hello.
你只分配了一个字节
::memcpy(pstr,pstring,5);
却给它复制了5个字节的内容,余下的那4个字节是从哪里偷来的,另外一个变量继续分配内存,那么就有可能从pstr的后一个字节开始分配,如此你觉得会有什么后果?
//C/C++下是可以的。C/C++不检查内存越界的情况。如果运气好,这段内存正好没有分配给其他变量,那么一切正常;如果已经分配出去了,轻则程序逻辑不正常,重则程序崩溃。