gpt4 book ai didi

检查在 C 中成功创建的数组

转载 作者:太空狗 更新时间:2023-10-29 17:19:12 24 4
gpt4 key购买 nike

在 C 中有两种创建数组的方法:

int array[100]; 

int * array = malloc(sizeof(int)*100); 

使用第二条语句可以很容易地检查是否有足够的可用内存来创建数组,例如:

if(array == NULL){
goto OutOfMemory;
}

但是您如何检查第一个是否成功?假设这是在微 Controller 而不是计算机上运行的。

最佳答案

在堆栈上分配数组(第一种方法)不存在可恢复的故障。它只会在分配它导致堆栈溢出时失败,此时您的程序无论如何都已中止/终止。

当您以第一种方式分配数组时,它是在堆栈上分配的,通​​常是在函数调用时。如果堆栈上没有足够的空间来分配它,程序就会因堆栈溢出/段错误而中止。

当您以第二种方式分配时,您是在实际调用 malloc 时向内存管理器请求堆上的内存。

编辑:正如@Deduplicator 所提到的,如果您在没有内存保护的系统上,没有足够的空闲堆栈空间来分配数组可能会导致溢出和更微妙的问题(尽管它很可能会在非法的情况下失败指令足够快)。

关于检查在 C 中成功创建的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23281061/

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