社区
工具平台和程序库
帖子详情
看过《effective c++》的人请进,有一小问题
liguang1981
2003-12-09 12:13:22
在内存管理这章中 作者提出了一个内存池的概念 并在一个plane 类中实现了类自己的new 和delete 但对内存池的最后释放问题却没给代码,我不理解怎样用::operator delete来释放 ,请高手指教,最好给出代码
...全文
97
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);
但不成功
因该怎么删?
RAG内容生成革新:STORM与Co-STORM引领智能检索与人类协作
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
精通 Storm(二)
在之前的章节中,我们学习了如何在远程 Storm 集群上部署拓扑,如何配置拓扑的并行性,不同类型的流分组等。在本章中,我们将专注于如何监视和收集运行在 Storm 集群上的拓扑的统计信息。在本章中,我们将涵盖以下主题:通过 Nimbus thrift 端口收集 Storm 指标将 Storm 与 Ganglia 集成安装 Graphite本节涵盖了如何使用 Nimbus thrift 客户端收集集群详细信息(类似于 Storm UI 页面上显示的详细信息)。通过 Nimbus thrift 客户端提取/收集
Storm学习小结(二)——集成JDBC和Redis
在自己写的一个Demo中使用了数据库存储的操作,发现一些
问题
,场景大致是:spout从kafka中读取数据,发送给bolt1计算得到一个数据,bolt1发给bolt2存储到Redis,bolt2发送给bolt3,在bolt3中存储到Mysql。在前面两个bolt中都没啥
问题
,在bolt3中,当并发量非常大时,存在获取不到数据库连接的
问题
,笔者首先使用的是原声jdbc,然后换了C3P0连接池,都会在不同时机出现上述
问题
【Storm】理解与深入学习【二】
本文是Storm系列之一,主要介绍Storm的架构设计,推荐读者在阅读Storm介绍(一)的基础之上,阅读这一篇。本文只是作者的读书笔记,偏重于浅层次的架构介绍,如果想真正理解内部设计时候的权衡,还需要更多的去阅读Storm源码。 理解Storm的架构,有助于帮助我们理解大型分布式系统设计中需要解决的
问题
,以及解决
问题
的思路,帮助我们更好的
进
行Storm性能调优化。 架构 先上一张Storm...
storm学习笔记(二)——Storm组件详解之Tuple、Spout
目录 Tuple元组 结构 生命周期 Spout数据源 结构 开发spout组件 Storm的核心概念包括:Stream、Spout、Bolt、Tuple、Task、Worker、StreamGrouping、Topology Stream是被处理的数据,Spout是数据源,Bolt是处理数据的容器,Tuple是数据单元,Task是运行Spout和Bolt中的线程,Worker是运行这些线程的
进
程,StreamGrouping规定了Bolt接受何种类型的数据最为输入,Topology是由..
工具平台和程序库
24,850
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章