gpt4 book ai didi

c - 数据比 malloc 声明的大会发生什么?

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:06 24 4
gpt4 key购买 nike

我是 C 的新手,我有一个关于 malloc 的问题。这是代码:

  int *array = malloc(3 * sizeof(int));
if (array != NULL) {
printf("success \n");
}

array[0] = 1;
array[1] = 1;
array[2] = 1;
array[3] = 2; // I assume this should fail ?
array[4] = 1; // I assume this should fail ?

printf(" %d \n", array[3]);

这是否意味着malloc 只是一个内存分配提示而不是上限?如果是,我如何在 C 中执行上限?

最佳答案

C 不强制执行任何边界检查 - 写入超过数组末尾的行为是未定义。根据您覆盖的内容,您的代码可能会立即崩溃,或者它可能会破坏其他数据,或者它可能会按预期工作。

编译器和运行时环境都不需要在写入超过数组末尾时发出任何警告或抛出任何异常。您应该只是不要那样做。

关于c - 数据比 malloc 声明的大会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58293765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com