Asp*_*bie 2 c memory arrays malloc dynamic
我正试图掌握malloc,到目前为止,我在测试和玩它时大多数都会得到意想不到的结果.
int main(int argc, char** argv)
{
int size = 10;
int *A;
A = (int *)malloc(size * sizeof(int));
for (int i = 0; i < 10000; i++)
{
A[i] = i;
}
for (int i = 0; i < 10000; i++)
{
printf("%d) %d\n", i, A[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
以上面的示例代码为例,代码运行时没有错误.即使我只分配A了10*int,所以我预计循环只会在遇到错误之前运行10次.如果我将循环增加到大约30-40k,那么它会遇到分段错误.但是,如果我将我的大小增加到循环量,它将始终像预期的那样工作.所以我知道如何避免这个错误..有点,我只是希望有人可以帮助解释为什么会这样.
编辑:原来我没有意识到C没有检测到越界,我被Java和C++一直照顾得太多了.我有不明确的行为,现在知道我的工作是防止它们.感谢所有回复的人.