社区
工具平台和程序库
帖子详情
看过《effective c++》的人请进,有一小问题
liguang1981
2003-12-09 12:13:22
在内存管理这章中 作者提出了一个内存池的概念 并在一个plane 类中实现了类自己的new 和delete 但对内存池的最后释放问题却没给代码,我不理解怎样用::operator delete来释放 ,请高手指教,最好给出代码
...全文
63
7
打赏
收藏
看过《effective c++》的人请进,有一小问题
在内存管理这章中 作者提出了一个内存池的概念 并在一个plane 类中实现了类自己的new 和delete 但对内存池的最后释放问题却没给代码,我不理解怎样用::operator delete来释放 ,请高手指教,最好给出代码
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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);
但不成功
因该怎么删?
学习
c++
的50个忠告
把
C++
当成一门新的语言学习,看《Think In
c++
》不看《
C++
变成死相》...
C++
编程开发学习的50条建议
给
C++
编程开发学习者的50条建议,总有一些建议让你受益匪浅。
Effect
ive
C++
边读边记主要内容梳理持续更新中...
Effect
ive
C++
第一章让自己习惯
C++
条款01:视
C++
为一个语言联邦条款02:尽量以const,enum,inline替换#define条款03:尽可能使用const第二章构造/析构/赋值运算 第一章让自己习惯
C++
条款01:视
C++
为一个语言联邦 这里主要将
C++
分成四个部分,每个部分都有各自的规则可能不同 1.C语言部分 2.Object-Oriented
C++
部分 3.Template
C++
部分 4.STL部分 条款02:尽量以const,enum,inline替换#define 1
Effect
ive
C++
改善程序与设计的55个具体做法笔记
Scott Meyers大师
Effect
ive
三部曲:
Effect
ive
C++
、More
Effect
ive
C++
、
Effect
ive
STL,这三本书出版已很多年,后来又出版了
Effect
ive
Modern
C++
。 More
Effect
ive
C++
的笔记见:https://blog.csdn.net/fengbingchun/article/details/102990753 E...
Effect
ive
C++
改善程序与设计的55个条款
Cpper分为两种,一种是读过《
Effect
ive
C++
》,另一种是没读过。让我们学习“专家的经验累积”。为啥我比别人踩过的坑更少,那个因为我走的是前人铺平的道路
工具平台和程序库
24,860
社区成员
27,333
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章