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

malloc函数申请内存空间。该怎么处理

2012-10-20 
malloc函数申请内存空间。动态申请的空间大小是看 内存?内存有多大就能申请多大的空间?1、看硬件的什么部件,

malloc函数申请内存空间。
动态申请的空间大小是看 内存?
 内存有多大就能申请多大的空间?

 1、看硬件的什么部件,硬件的物理内存大小?

 2、 我在一个函数里申请4196字节的动态指针就死机了。请问这个是谁来控制的,大小又是谁来控制的?一个函数可以申请多大的动态指针空间?

[解决办法]
动态申请的空间大小和两个因素相关,第一是虚拟存储的最大空间,32位系统是4g;第二是跟当时你的计算机中内存消耗情况和内存碎片的情况相关。

申请4196字节的内存绝对不会造成死机,可能是你指针使用错误造成的。

探讨
动态申请的空间大小是看 内存?
内存有多大就能申请多大的空间?

1、看硬件的什么部件,硬件的物理内存大小?

2、 我在一个函数里申请4196字节的动态指针就死机了。请问这个是谁来控制的,大小又是谁来控制的?一个函数可以申请多大的动态指针空间?

[解决办法]
对的,主要是由闲置的内存大小所决定的。可能是因为你申请的空间超过你的设备闲置内存容量了。
[解决办法]
这个东西要从系统和进程上去看的.
就当下常见的x64的windows来看.

系统可以用的内存是 2的64次方字节,但是有一半的内存地址给系统本身用掉了,最低的一小部分用作开发测试用了.比如 0x0000000000000000 地址就不可以写,也不能读
而进程之间,内存是隔开的.
对于一个x64的进程而言,可以申请的内存大约是2的63次方字节.
但是malloc出来的内存真的就实实在在的分配了么?当然不是,只有在这段内存真正被使用时才会真正进入ram.而且是通过内存页的方式加载的.


如果是其它系统的情况,就要看其具体的系统来定了.
如果是祼系统的,那就要看你的malloc函数是如何实现的了.
[解决办法]
那就难说了,嵌入式系统的内存分配我不太清楚,系统提供的内存分配策略需要你自己研究。

探讨
我的设备不是计算机。

[解决办法]
探讨

malloc跟程序的堆栈的大小也有关系,你的堆栈都已经满了还怎么申请啊。

热点排行