社区
工具平台和程序库
帖子详情
看过《effective c++》的人请进,有一小问题
liguang1981
2003-12-09 12:13:22
在内存管理这章中 作者提出了一个内存池的概念 并在一个plane 类中实现了类自己的new 和delete 但对内存池的最后释放问题却没给代码,我不理解怎样用::operator delete来释放 ,请高手指教,最好给出代码
...全文
60
7
打赏
收藏
看过《effective c++》的人请进,有一小问题
在内存管理这章中 作者提出了一个内存池的概念 并在一个plane 类中实现了类自己的new 和delete 但对内存池的最后释放问题却没给代码,我不理解怎样用::operator delete来释放 ,请高手指教,最好给出代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dddd8888
2004-01-30
打赏
举报
回复
getnext()的定义能不能贴出来
smaxll
2003-12-09
打赏
举报
回复
search
hanyixin
2003-12-09
打赏
举报
回复
一开始怎么申请的,最后就怎么释放,就是这个道理 ^_^
hanyixin
2003-12-09
打赏
举报
回复
你传递给delete的值就是你new返回的值吗?
还有:
Node *new_block=static_cast<Node *>(::operator new(sizeof(Node)*512));
~~~~~~~~~~~~~~~~~~~~~~~~~~
这样也可以?
liguang1981
2003-12-09
打赏
举报
回复
我也试了
List::~List()
{
if(_head)
{
del();
}
::operator delete (Node::free_head);//free_head 为内存池的头指针
}
但在::operator delete (Node::free_head);还有异常_BLOCK_TYPE_IS_VALID
hanyixin
2003-12-09
打赏
举报
回复
你用了一个new申请了一大块空间,删除的时候就应该只用一个delete来释放才对。
liguang1981
2003-12-09
打赏
举报
回复
Node是一个类
class Node
{ private:
Node *next;
}
我先用::operator new() 分配了sizeof(Node)*512一大块内存区
Node *new_block=static_cast<Node *>(::operator new(sizeof(Node)*512));
//然后分成一块块,每一块的大小为sizeof(Node)
并把每块都串起来
for(int i=0;i<512-1;i++)
{
new_block[i]._next = &new_block[i+1];
}
new_block[512-1]._next = 0;
free_head=&new_block[0];
//free_head 为这段内存的头指针
//当外部程序要内存的话,就从这内存池里取一块或几块下来
我要释放这段内存
但::operator delete() 好像只能是删void的连续内存,是吗?
我编了一个释放函数 用一个指针遍历这段内存串,用::operator delete 一块块删除
Node *prev =Node::free_head;
Node *p= prev->getnext();
while(p!=0)
{
::operator delete (prev);
prev=p;
p=p->getnext();
}
::operator delete (prev);
但不成功
因该怎么删?
《
Effect
ive
C++
》读书笔记(第一部分)
有人说
C++
程序员可以分为两类,读过
Effect
ive
C++
的和没读过的。世界顶级
C++
大师Scott Meyers 成名之作的第三版的确当得起这样的评价。 本书并没有你告诉什么是
C++
语言,怎样使用
C++
语言,而是从一个经验丰富的
C++
大师的角度告诉程序员:怎么样快速编写健壮的,高效的,稳定的,易于移植和易于重用的
C++
程序。 本书共分为9节55个条款,从多个角度介绍了C+
对《
C++
Primer Plus》、《
C++
Primer》、《
C++
Primer习题解答》、《
Effect
ive
C++
》的一点看法,供大家参考...
对《
C++
Primer Plus》、《
C++
Primer》、《
C++
Primer习题解答》、《
Effect
ive
C++
》的一点看法,供大家参考:一、《
C++
Primer Plus》是一本很好的入门书籍,强烈推荐。先对其优点介绍如下:1:讲解详细,对
C++
每个细节都讲的很清楚,哪怕不同编译器有可能不通过的地方都会讲到。2:例题很好,书中通过一个个简单但完整的程序设计例子来讲解
C++
的用法。这...
《
Effect
ive
C++
》读书摘要
来源: http://www.cnblogs.com/fanzhidongyzby/arch
ive
/2012/11/18/2775603.html> 最近刚读完侯捷的《
Effect
ive
C++
》,相对来说,这本书的内容比较贴近基础,对于刚掌握
C++
基础的人会有不少的提高。不过书中还是涉及了不少
C++
的高级特性,阅读起来需要查阅相关的资料。书中给出了大量的示例和代码来说明具体规则的原理,我
More
Effect
ive
C++
阅读笔记 解释清晰
More
Effect
ive
C++
阅读笔记 解释清晰
Effect
ive
C++
中文版(第三版)读书笔记 更新ing~
Effect
ive
C++
中文版(第三版)导读部分条款1 视
c++
为一个联邦条款2 尽量以const,enum,inline替换#define条款3 尽可能使用const条款4 确定对象使用前已被初始化 导读部分 类中声明构造函数时,隐式类型转换非必要的时候,最好在构造函数开头加 explict,加了之后也是允许显式类型转换 。 class B { Explict B(int x=0;bool b=ture); }; doSomething(B(10)) //发生显式类型转换,B的构造函数将
工具平台和程序库
24,854
社区成员
27,345
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章