读书人

malloc分配空间的作用范围有多大?该如

发布时间: 2012-04-01 17:23:46 作者: rapoo

malloc分配空间的作用范围有多大?
如果我在一个函数内部用malloc分配空间,在这个函数返回之后分配的空间还有效么?

[解决办法]
正确分配了当然有效,就算函数运行完,这个内存还是在那里的,直到你用free()清除。
[解决办法]
申请释放内存就跟打开关闭文件一样,在函数外仍保持有效。但前提是返回的内存指针和文件指针/句柄还能访问。
[解决办法]
malloc 可以分配的最大空间,取决于当前有多少内存可以使用
如果内存足够大,那是不是可以无限使用呢,
不是的,因为,还有size_t的限制

[解决办法]
malloc分配的内存在函数返回之后仍然可以使用,只有你调用free之后才不可使用,因为此时这块内存已经由内存管理系统去管理了,而它极有可能已经分配给别人使用了。

malloc分配内存的大小与你的系统的实际物理内存大小是有关系的,而且与你的程序是运行在用户态还是内核态也有关系。以32位的CPU来说,如果实际物理内存有4G,那么在MIPS体系结构中,用户态程序最多可以分配到2G内存(具体用户态和内核态内存的分配是由体系结构决定的,请要查看相关的体系结构说明)。

读书人网 >C++

热点推荐