为什么会有内存申请失败??跪求解答
假如:有大量的数据 需要读进内存存储,但是在动态申请内存的过程中,发现申请失败了,但是此时内存还是很充足的,而且 连续内存空间也很充足,那为什么还是会申请失败呢???求大神们 给出原因啊注:请不要说 比如 代码写错了啊 内存不足啊 之类的答案谢谢!!!会不会是某个指针的引用不恰当~~~~~
前两天我还遇到过一个,提在这里问过的~~~ 你用malloc还是new?
如果malloc失败的话我也不能解释
如果new失败的话很可能是new的时候调用的构造函数发生了异常导致程序中止 仰望天上的光 发表于 2012-9-26 21:38 static/image/common/back.gif
你用malloc还是new?
如果malloc失败的话我也不能解释
如果new失败的话很可能是new的时候调用的构造函数发 ...
比如说用C++ STL模版中的vector存放读入的大量数据,但是最后申请失败 条件还是上面的给的 内存充足,而且连续内存空间充足这是为什么?? 晓北 发表于 2012-9-26 21:11 static/image/common/back.gif
会不会是某个指针的引用不恰当~~~~~
前两天我还遇到过一个,提在这里问过的~~~
我的意思 就是一直都正常 突然在申请了很多次之后 申请不成功了 拉登o睡觉 发表于 2012-9-26 21:52 static/image/common/back.gif
比如说用C++ STL模版中的vector存放读入的大量数据,但是最后申请失败 条件还是上面的给的 内存充足,而且 ...
你vector里存放的是什么?基本数据类型还是类类型?如果是类类型应该检查下该类型的构造函数 仰望天上的光 发表于 2012-9-26 22:14 static/image/common/back.gif
你vector里存放的是什么?基本数据类型还是类类型?如果是类类型应该检查下该类型的构造函数
基本数据类型,这是我面试**搜索公司 问的问题,我的第一回答 是没有连续的内存空间了,他告诉我有连续的内存空间,而且还很充足,想想其它的原因,然后我就说不出来了! 仰望天上的光 发表于 2012-9-26 21:38 static/image/common/back.gif
你用malloc还是new?
如果malloc失败的话我也不能解释
如果new失败的话很可能是new的时候调用的构造函数发 ...
构造函数 怎么发生异常 导致这种情况啊 就是一直能申请成功 然后在某个时刻 申请失败了??另外 我突然想 会不会是 内存也像U盘一样啊有写保护 剩下的充足的内存被写保护了 所以会申请失败 ,如果在没有占有这块内存之前 能够写保护 那应该怎么设置,才能使这块内存是写保护的呢?? 拉登o睡觉 发表于 2012-9-27 09:40 static/image/common/back.gif
构造函数 怎么发生异常 导致这种情况啊 就是一直能申请成功 然后在某个时刻 申请失败了??另外 我突然想 ...
构造函数异常如发生除0异常等,你说的情况我没遇到过,不清楚. 拉登o睡觉 发表于 2012-9-26 21:56 static/image/common/back.gif
我的意思 就是一直都正常 突然在申请了很多次之后 申请不成功了
会不会是在你多次申请之后,再申请出现内存越界~~~~~ 晓北 发表于 2012-9-28 08:42 static/image/common/back.gif
会不会是在你多次申请之后,再申请出现内存越界~~~~~
有充足的内存 而且有充足才连续内存 为什么会越界呢??求解答 拉登o睡觉 发表于 2012-9-28 09:08 static/image/common/back.gif
有充足的内存 而且有充足才连续内存 为什么会越界呢??求解答
我的意思是说,动态分配出来的内存,比实际变量需要使用的内存要小~~~~ 你说的含糊很,谁能知道你的是什么原因造成的? {:5_105:} 晓北 发表于 2012-9-28 09:30 static/image/common/back.gif
我的意思是说,动态分配出来的内存,比实际变量需要使用的内存要小~~~~
哦 明白了,但是 前提条件已经说了,内存充足,连续内存也充足, haiqi1025 发表于 2012-9-28 09:48 static/image/common/back.gif
你说的含糊很,谁能知道你的是什么原因造成的?
对啊,所以 让分析所有可能的原因啊?这就是这个题的目的 你的意思是在同一个程序里多次malloc并free吗
如果是的话有可能是堆区空余空间变得零散,使得连续空间不足
如果是只调用1次malloc的程序反复运行出现错误就不清楚了 the_one 发表于 2012-10-1 22:25 static/image/common/back.gif
你的意思是在同一个程序里多次malloc并free吗
如果是的话有可能是堆区空余空间变得零散,使得连续空间不足 ...
比如STL中的vector,我们都知道 vector动态申请的时候,每次申请都是上次的二倍,具体怎么实现的我也没研究,在内存充足,连续空间充足的情况下,为什么还是会申请失败?? 你看看这个吧http://blog.csdn.net/hzhzh007/article/details/6424638
具体原因我也不清楚,但即使内存很大,分配给程序的堆区也不会无限大,如果是程序刚开始运行,堆区距栈区很远的情况下就申请失败那我就没法解释了 {:1_1:}
页:
[1]