首页 > 试题广场 >

已知代码char* p=(char*)malloc(val)

[填空题]

已知代码char* p=(char*)malloc(val);其中p在运行的时候获得了一个空指针,请列举三种可能的原因?123

动态分配内存返回空指针,说明分配内存未成功,有三种可能:
(1)分配的空间太小
(2)分配的空间被当作内存碎片处理
(3)val取值过大,即分配空间过大会导致内存溢出
发表于 2018-08-28 16:12:19 回复(0)
malloc分配失败的原因有:
1.已分配空间出现内存越界访问,导致malloc函数的部分信息被破坏,造成下一次分配异常
2.val占用空间过大,系统剩余内存空间不足
3.已分配空间被当作内存碎片处理,暂时无法回收和利用,大量的内存碎片会造成系统剩余内存不足
发表于 2019-05-20 10:31:40 回复(0)
分配的空间太小 是什么意思?就是val是0也能分配成功啊?求解释
发表于 2019-06-03 22:09:57 回复(0)
空间太小;内存碎片处理掉,分配空间过大以致内存溢出
发表于 2019-03-25 15:39:58 回复(0)