访问已分配的内存时出现访问冲突错误

时间:2017-06-04 12:34:36

标签: c

我使用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; ---我在这里得到错误。请帮助我

2 个答案:

答案 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"比那更长,因此你的错误