内存泄露问题

[复制链接]
2173|13
 楼主| 火箭球迷 发表于 2013-12-30 21:13 | 显示全部楼层 |阅读模式
struct biaoxinxi            //数据字典中单位表的信息
{
    string biaoming;        //表的名称
    int daxiao;             //表中所含元组的个数
    int shuxing_count;      //表的
    string jianbiaoriqi;    //建表日期
    int shiyoncishu; //一个表的使用次数
};

struct shujuzidian          //数据字典的结构
{
    biaoxinxi *biao;        //数据字典里每张表的信息
    int biaogeshu;          //表的个数
    string zuihouxiugai;    //数据库最后修改的日期
};
ofstream f2;
f2.open("数据字典.dat",ios::out|ios::binary);
f2.write((char*)(&x),sizeof(shujuzidian));
f2.close();
ifstream f3;
f3.open("数据字典.dat",ios::in|ios::binary);
shujuzidian xx;
f3.read((char*)(&xx),sizeof(shujuzidian));
cout<<xx.zuihouxiugai<<endl;
f3.close();
运行 f3.read((char*)(&xx),sizeof(shujuzidian));之后释放是救内存泄漏了好像
xsgy123 发表于 2013-12-30 21:23 | 显示全部楼层
内存泄漏,自己申请了内存了。没有及时的得到合理的释放!

你贴出来的代码,都没看到申请,释放这些呢!
无冕之王 发表于 2013-12-30 21:30 | 显示全部楼层
string是对象,不是一段内存,不适合放在struct中。

评分

参与人数 1威望 +1 收起 理由
icecut + 1

查看全部评分

yybj 发表于 2013-12-30 21:42 | 显示全部楼层
编译器还会告诉你内存泄露?那还要检测工具干什么
comeon201208 发表于 2013-12-30 23:17 | 显示全部楼层
内存泄露,,这个不是很了解的,也不太理解其意思的啊:L
comeon201208 发表于 2013-12-30 23:18 | 显示全部楼层
刚百度了下的,,,贴出来了啊。。一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。
comeon201208 发表于 2013-12-30 23:18 | 显示全部楼层
应用程序一般使用malloc,calloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
comeon201208 发表于 2013-12-30 23:19 | 显示全部楼层
内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,那么对于该进程来说,会因此导致总可用内存的减少,这时就出现了内存泄漏。
vivilzb1985 发表于 2013-12-31 23:38 | 显示全部楼层
楼上有心啊,很不错的介绍的
骗子的片子 发表于 2014-2-26 19:04 来自手机 | 显示全部楼层
不用了还不释放
骗子的片子 发表于 2014-2-27 09:43 来自手机 | 显示全部楼层
其实学好了c比啥都强
xsgy123 发表于 2014-2-27 18:28 | 显示全部楼层
很容易犯的错误啊
无冕之王 发表于 2014-2-27 18:38 | 显示全部楼层
一般都是忘记释放造成的
pkat 发表于 2014-2-27 18:50 | 显示全部楼层
经常碰到内存泄露的问题,很麻烦的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:姚明的铁杆球迷

150

主题

3470

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部