以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 在C++中使用C的一个malloc函数的疑惑[求助] (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=29237) |
-- 作者:rong9.13 -- 发布时间:3/24/2006 8:36:00 PM -- 在C++中使用C的一个malloc函数的疑惑[求助] 疑惑一: 用malloc()函数申请一个连续的空间存放数据类型为类的学生信息, 能否把这个空间看作一个顺序表呢?(老师说不能混为一谈,我认为老师理解错了^^) 疑惑二: |
-- 作者:elfstone -- 发布时间:3/27/2006 9:08:00 PM --
1. malloc()是C语言中用于动态分配内存的函数,用它分配到的内存空间在逻辑上是连续的,但在物理上不一定是连续的,你们老师说得对,你搞混了。。。 2. 不释放的话会造成空间资源的浪费,如果你的内存足够大,或者你的程序所要占用的内存空间不是很大,不释放也没什么关系。。。
|
-- 作者:enorm -- 发布时间:3/28/2006 7:01:00 PM -- 疑惑二: 在一个程序中使用了malloc()函数申请空间,就必须要将申请的空间释放吗?(如果要一直占有这个空间呢?)
|
-- 作者:firstway -- 发布时间:3/28/2006 7:02:00 PM -- 关于问题2 malloc()后如果一直在用这个内存当然不去释放 问题就在不使用时也不去释放就会有问题 如果是运行时间很长的服务器 不停的malloc()而没有释放 最后可能会使系统内存枯竭 一般我们做些小东西,一点点内存泄漏可能看不出来 [此贴子已经被作者于2006-3-28 20:56:06编辑过]
|
-- 作者:Rahxephone -- 发布时间:3/31/2006 11:11:00 PM -- malloc 与c++重的new有一些区别: 感觉主要的是malloc不会自动调用类的构造函数, 但是new可以。 对于malloc分配的内存是否连续我也没注意。如果物理上不连续的话。 那么int *i=malloc(10*sizeof(int));i[6]就因该不是地址为(i+6)了,那么怎么赋值,感觉有点不太对。觉得物理地址因该连续吧。 |
-- 作者:elfstone -- 发布时间:4/1/2006 5:47:00 PM --
所谓的连续是在逻辑层面上抽象出来的一个概念。。。 |
-- 作者:rong9.13 -- 发布时间:4/1/2006 11:25:00 PM -- 谢谢大家的解答和建议! 使我对c和c++中关于申请动态空间的异同有了一些了解! 我又去找了一下数据结构课本,对于用malloc()函数申请一组连续的空间,也就是顺序表,在逻辑上和物理上都是连续的,如果没有足够大的可用空间会申请不成功:对于链表在物理上可以是连续的也可以是不连续的,此时才可以使用零散的可用空间. |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |