我使用malloc
分配了100 MB的内存block = (char *)malloc(sizeof(10485760)); // char *block is a global variable
然后我将块中的值赋给一些局部变量,例如localblock
char *localblock = block;
当我尝试在1 MB之后访问位置并在该位置复制字符串时出现访问冲突错误
int si = 1048576;
for (int i=0; i < si; ++i)
++localptr;
strcpy(localblock,"random_string");
&lt; ---我在这里得到错误。请帮助我
答案 0 :(得分:3)
block = (char *)malloc(sizeof(10485760));
只分配sizeof(int)字节数,当你访问内存时,它将最终访问无效内存并且程序可能崩溃
答案 1 :(得分:-1)
使用malloc
时,无法保证分配。
block = (char *)malloc(sizeof(10485760));
尝试为 10485760 分配空间,这是一个int
- 意味着32/64位机器上的4/8字节。 "random_string"
比那更长,因此你的错误