C++了解free和delete(转自:http://www.cnblogs.com/mrye/archive/2012/09/01/2667079.html)

void MyMethod1()

{

    using namespace std;

    int a=6;

    int b=6;

    int* pa=new int;

    int* pb=new int;

    *pa=a;

    pb=pa;

    cout<<"pa的内容赋值为:"<<a<<endl;

    delete(pa);

    //free(pa);//加上这句造成pa不可用,

    //cout<<"free(pa);之后试试能不能读取pa:"<<pa<<endl;//实验证明会挂掉程序

    //cout<<"free(pa);之后试试能不能读取a:"<<a<<endl;//实验证明会挂掉程序

    cout<<"pa的内容:"<<*pa<<endl;

    cout<<"pa的地址:"<<pa<<endl;

    cout<<"pb的内容:"<<*pb<<endl;

    cout<<"pb的地址:"<<pb<<endl;

    *pb=b;

    cout<<"pb的内容赋值为:"<<b<<endl;

    cout<<endl;

    cout<<"pa的内容:"<<*pa<<endl;

    cout<<"pa的地址:"<<pa<<endl;

    cout<<"pb的内容:"<<*pb<<endl;

    cout<<"pb的地址:"<<pb<<endl;

    Sleep(1000);//蛋疼的我测试下休眠函数

}

/*

delete 是把一段内存标记为可用(没被占用)

free 会释放这段内存(清空)

free之后内存不能访问,因为没有内容

delete 之后还能访问,但是不能确定内容

*/

int main(int argc, char* argv[])

{

    MyMethod1();

    return 0;

}

时间: 2024-08-27 07:57:15

C++了解free和delete(转自:http://www.cnblogs.com/mrye/archive/2012/09/01/2667079.html)的相关文章

delete分析 引用于 http://www.cnblogs.com/yuzhongwusan/archive/2012/06/14/2549879.html

最近重新温习JS,对delete操作符一直处于一知半解的状态,偶然发现一篇文章,对此作了非常细致深入的解释,看完有茅塞顿开的感觉,不敢独享,大致翻译如下. 原文地址:http://perfectionkills.com/understanding-delete/ P.S. 作者是PrototypeJS的开发组成员之一 ========分割线======== 在开始之前,先让我们看一段代码 Js代码     >>> var sum = function(a, b) {return a + 

c++, class的大小

不为类.对象的函数分配空间: 在类中如果有virtual声明的虚函数,则会隐藏一个指针,该指针指向虚函数表,这对于纯虚函数也是一样: 对于虚继承,还有一个指向父类的指针,该指针为指向虚基类的指针(Pointer to virtual base class). #include "stdafx.h" #include <iostream> using namespace std; #include "t1.h" class TNULL { }; class

计数排序与位图排序

计数排序(Counting sort)是一种稳定的线性时间排序算法.计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数.然后根据数组C来将A中的元素排到正确的位置.计数排序不是比较排序,排序的速度快于任何比较排序算法.由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存.计数排序更适合于小范围集合的排序.比如100万学生参加高考,我们想对这100万学生的数学成绩(

http 中get和post

1. http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html 浅谈HTTP中Get与Post的区别 2009-03-31 14:51 by hyddd, 314796 阅读, 80 评论, 收藏, 编辑 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,

JQuery EasyUI datagrid 复杂表头处理

http://www.cnblogs.com/szytwo/archive/2012/09/18/2691420.html $('#day_health').datagrid({ url: "sqb_bweb_day_health.aspx?mode=day_health", pagination: true, total: 2000, pageSize: 10, pageList: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100], rownumbe

jsp文件上传

整理了一下jsp的上传下载,由客户端到服务端,包括一些常规的业务 一客户端 先看最基本的情况 1 在表单设置multipart/form-data,通过提交键把数据和附件一次性提交的.服务器更多的是对应这个例子. 但有以下问题 一般的Ajax无法把附件数据发过去 附件往往涉及比较多问题,比如上传需要时间(要有个进度),上传也有可能不成功等,上传需要校验的东西就比较多. 2于是就有把上传分开来自己执行的.上传项在浏览文件后就开始上传,其他表单数据在提交表单时再提交. 更详细地说是:上传在表单中有自

Linq的一些记录

1. IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤. 2. Linq使用Func<T, bool>时候会产生全表查询,使用Expression<Func<T

关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1

原文地址:http://www.tuicool.com/articles/qe6BZbR 也许因为它太过于简单,自己一直没能好好关注这个语句,只记得"只是"提高点性能而已.有时会在存储过程中写上几句,有时也会懒得去敲这几个字母.但是.他们SET NOCOUNT ON 和SET NOCOUNT OFF 之间到底有多大的区别吗?前天一时好奇.终于想弄清楚他们之间性能有多大区别.在google一遍,找了几篇文章.我们可以得出一些结论. How NOCOUNT affects ADO.NET (NOCO

一些题

堆栈:为子程序调用和中断操作而设置的,具体功能有两个:保护断点,保护现场. new delete与malloc free的区别与联系 详见http://blog.csdn.net/jerry4711/article/details/4620171 对输入字符串进行压缩,输入"aaabcccdde",输出"3ab3c2de",即对连续出现的字符进行压缩. 详见http://www.cnblogs.com/liangchao/archive/2012/09/11/268