怎么表达丶 发表于 2019-11-27 21:11:42

大神们,请问这个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:15

使用指针定义的字符串都是常量;
你对常量做出改变不出错就见鬼

怎么表达丶 发表于 2019-11-27 21:37:18

bin554385863 发表于 2019-11-27 21:28
使用指针定义的字符串都是常量;
你对常量做出改变不出错就见鬼

thanks

windows 发表于 2019-11-27 21:42:34

因为指针指向常量,常量存在常量区,常量区不可改,所以内存拷贝的时候会导致程序崩溃。
应该先计算长度再用malloc分配空间,然后再进行拷贝,这样就不会有问题了。注意分配空间时候要多申请一个字节的空间,因为字符串以'\0'结尾。不以0结尾就会出现问题

怎么表达丶 发表于 2019-12-23 09:34:40

windows 发表于 2019-11-27 21:42
因为指针指向常量,常量存在常量区,常量区不可改,所以内存拷贝的时候会导致程序崩溃。
应该先计算长度再 ...

谢谢宁,很详细。
页: [1]
查看完整版本: 大神们,请问这个mencpy函数的使用哪里出错了