大神们,请问这个mencpy函数的使用哪里出错了
#include <iostream>int main()
{
int i=1;
const char *str3="abcdefg";
char *str4="hrjklmn";
memcpy(str4, str3,1);
std::cout<<str4<<std::endl;
getchar();
return 0;
}
test.exe 中的 0x0f5ccafa (msvcr100d.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x00fe7830 时发生访问冲突 使用指针定义的字符串都是常量;
你对常量做出改变不出错就见鬼 bin554385863 发表于 2019-11-27 21:28
使用指针定义的字符串都是常量;
你对常量做出改变不出错就见鬼
thanks 因为指针指向常量,常量存在常量区,常量区不可改,所以内存拷贝的时候会导致程序崩溃。
应该先计算长度再用malloc分配空间,然后再进行拷贝,这样就不会有问题了。注意分配空间时候要多申请一个字节的空间,因为字符串以'\0'结尾。不以0结尾就会出现问题 windows 发表于 2019-11-27 21:42
因为指针指向常量,常量存在常量区,常量区不可改,所以内存拷贝的时候会导致程序崩溃。
应该先计算长度再 ...
谢谢宁,很详细。
页:
[1]