【发布时间】:2017-11-05 08:29:58
【问题描述】:
我使用 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");
【问题讨论】:
-
sizeof(10485760)??真的吗?你认为这有什么作用? -
同时删除 C++ 标签,这是 C 代码 - 在 C 中你也不需要转换
malloc的返回 -
"我已经使用 malloc 分配了 100 MB 的内存..."不,你没有
-
有一种更好的方法可以让指针前进 X 元素而不是循环:
localptr += si;。 -
作为@UnholySheep,C 和C++ 是非常不同的语言。只用其中一个标记您的问题。
标签: c