首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于malloc函数的有关问题

2012-04-12 
关于malloc函数的问题当malloc函数的输入参数为正数的情况下,有哪些情况可能导致malloc函数发生异常呢?[解

关于malloc函数的问题
当malloc函数的输入参数为正数的情况下,有哪些情况可能导致malloc函数发生异常呢?

[解决办法]
地址空间不够用了。
[解决办法]
频繁的分配1M一下的小空间,可能造成堆碎片过多,分配失败

分配超过10M的空间,有些设备上会因内存不足而分配失败
[解决办法]
没有连续的空间满足你的要求
[解决办法]
malloc不会抛出异常,直会return NULL。并设置errno
具体设置的错误,你要查编译器手册

In Visual C++ 2005, malloc sets errno to ENOMEM if a memory allocation fails or if the amount of memory requested exceeds _HEAP_MAXREQ. For information on this and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.


[解决办法]

探讨
按照我之前看到的资料,当没有连续的空间满足我的需要的时候,系统应该会将函数阻塞,通过移动内存碎片来拼凑出一个足够大的空间来,这样不是不会报错的么?
我的代码,的确有频繁的申请小空间,基本都在2~200个字节之间,频率的话,大概每秒几十万次的样子,这样会导致malloc报错的么?

[解决办法]
没有释放,用完之后,一定要释放。。。
[解决办法]
探讨
没有释放,用完之后,一定要释放。。。

[解决办法]
探讨
而且,即使内存不足,它也应该返回一个NULL啊,为什么报错呢

热点排行