| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2112 人关注过本帖
标题:free/delete真的把动态内存的释放完了吗?
取消只看楼主 加入收藏
TGM316750432
Rank: 2
来 自:河南周口
等 级:论坛游民
帖 子:56
专家分:97
注 册:2010-8-27
结帖率:75%
收藏
已结贴  问题点数:8 回复次数:2 
free/delete真的把动态内存的释放完了吗?

#include <iostream>  
#include <malloc.h>  
  
using namespace std;  
main()  
{  
    int arraysize; //元素个数  
    int *array; //用于动态开辟数组的指针变量  
  
    cin>>arraysize;  
    array=(int*)malloc(arraysize * sizeof(int));//利用malloc在堆内存中开辟内存空间,它的大小是元素的个数乘以该数据类型的长度  
  
    for(int i=0;i<arraysize;i++)   
    {  
        array[i]=i;  
    }  
  
    for(int i=0;i<arraysize;i++)  
    {  
        cout<<array[i]<<",";  
    }  
    cout<<endl;  
    free(array);//利用free释放动态开辟的堆内存空间
 
    for(int i=0;i<arraysize;i++)  
    {  
        cout<<array[i]<<",";  
    }  
    cout<<endl;  
     
    cin.get();  
    cin.get();  
}


如果输入数组长度为5   free前输出结果为0,1,2,3,4 free后输出为   5252072(不确定的数),5246776(不确定的数),2,3,4    为什么动态内存free后仍可以访问第二个以后的数据?free是不是只释放了前两个数据?
搜索更多相关主题的帖子: 内存 delete free 动态 释放 
2010-10-15 21:29
TGM316750432
Rank: 2
来 自:河南周口
等 级:论坛游民
帖 子:56
专家分:97
注 册:2010-8-27
收藏
得分:0 
回复 3楼 pangding
如果动态分配的单链表  只free头指针是不是就把链表全部的内存释放了?  另外请帮忙解释下内存泄漏的定义
2010-10-16 11:18
TGM316750432
Rank: 2
来 自:河南周口
等 级:论坛游民
帖 子:56
专家分:97
注 册:2010-8-27
收藏
得分:0 
回复 3楼 pangding
如果动态分配的单链表  只free头指针是不是就把链表全部的内存释放了?  另外请帮忙解释下内存泄漏的定义
2010-10-16 11:18
快速回复:free/delete真的把动态内存的释放完了吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013588 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved