`

C和C++的简单比较一:内存分配与释放

阅读更多

简单比较C与C++在内存分配与释放中指针及其所指向的变量的变化,使用gcc 、g++编译。

 

示例一_C:

Example_One:

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int *p;
	printf("%p\n",p);
	printf("%d\n\n",*p);

	p=(int*)malloc(sizeof(int));
	printf("%p\n",p);
	printf("%d\n\n",*p);

	*p=6;
	printf("%p\n",p);
	printf("%d\n",*p);

	free(p);

	return 0;
}


Result:

0xb77b5d70
1474660693

0x804a008
0

0x804a008
6

 

示例二_C++:

Example_Two:

#include<iostream>
using namespace std;

int main()
{
	int *p;
	cout<<p<<endl;
	cout<<*p<<endl<<endl;

	p=new int;
	cout<<p<<endl;
	cout<<*p<<endl<<endl;

	*p=6;
	cout<<p<<endl;
	cout<<*p<<endl;

	delete p;

	return 0;
}


Result:

0xb776bd70
1474660693

0x804a008
0

0x804a008
6
  

结果明显,不做分析。

分享到:
评论
2 楼 rasonyang 2010-11-25  
想表达什么????
1 楼 iamjiex 2010-11-13  
没能看懂。

相关推荐

    C/C++自动分配和回收内存

    根据生命周期结束后可以自动释放内存.严格来说是可以说半自动回收,个人原编,希望对大家有用,反正我是用的挺爽,创建内存方面,内存回收也干净.

    C/C++动态分配与释放内存的区别详细解析

    1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针...

    操作系统模拟内存调用与释放C++代码

    C++代码,模拟实现了操作系统中内存的调用与释放,代码有详细注释,全部实现了最先分配,最优分配,最坏分配三种,代码可以在DEV C++或者VC++ 6.0直接运行,下载不到VC++的可以和我联系,我提供云盘链接。

    C语言内存分布图(计算机基础知识)

     全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。  常量存储区,这是一块比较特殊的...

    计算机操作系统实验_动态分区分配方式模拟

    空闲分区通过空闲区链进行管理,在内存分配时,优先考虑低地址部分的空闲区。 2.分别采用首次适应算法、最佳适应算法和最坏适应算法模拟内存空间的动态分配与回收,每次分配和回收后显示出空闲区链的详细情况(说明...

    c_c++中内存区域划分大总结

    3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.另外还有一个专门放常量的地方...

    Malloc和new区别

    3 ,因此C++ 语言需要一个能完成动态内存分配和初始化工作的运算符new ,以一个能完成清理与释放内存工作的运算符delete.注意ne w/delete 不是库函数。 4 ,C++ 程序经常要调用C函数,而C 程序只能用malloc/free ...

    详解C++ 动态内存分配与命名空间

    1、C++中的动态内存分配 通过new关键字进行动态内存申请 C++中的动态内存申请时基于类型进行的 delete关键用于内存释放 C语言其实是不支持动态内存分配的,是通过malloc库函数来实现的,可能有一些硬件根本不...

    深度探索C ++ 对象模型,内容概要:多态是一种威力强大的设计机制,允许你继承一个抽象的public接口之后,封装相关的类型,需要付出的代价就是额外的间接性--不论是在内存的获得,或是在类的决断上,C++通过class的pointer和references来支持多态,这种程序风格就称为"面向对象"。

    内容概要:多态是一种威力强大的设计机制,允许你继承一个抽象的public接口之后,封装相关的类型,需要付出的代价就是额外的间接性--不论是在内存的获得,或是在类的决断上,C++通过class的pointer和references来支持多态...

    操作系统课程设计——一动态分区分配方式的模拟

    要求:用C语言或C++语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间。 假设初始...

    C语言 动态内存分配详解

    C语言 动态内存分配详解 动态内存分配涉及到堆栈的概念:堆栈是两种数据结构。堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 栈(操作系统):由操作系统自动分配释放 ,...

    控制C++的内存分配

    在嵌入式系统中使用C++的一个常见问题是内存分配,即对new 和 delete 操作符的失控。  具有讽刺意味的是,问题的根源却是C++对内存的管理非常的容易而且安全。具体地说,当一个对象被消除时,它的析构函数能够安全...

    程序的内存分配

    一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    面试题18:简述C、C++程序编译的内存分配情况 面试题19:以下四段代码中哪段没有错误 第6章 字符串 6.1 数字字符串 面试题1:编码实现数字转化为字符串 面试题2:编码实现字符串转化为数字 6.2 字符串函数 面试题3:...

    高质量C++编程指南.PDF

    7.1内存分配方式 7.2常见的内存错误及其对策 7.3指针与数组的对比 7.4指针参数是如何传递内存的? 7.5 free和delete把指针怎么啦? 7.6 动态内存会被自动释放吗? 7.7 杜绝“野指针” 7.8 有了malloc/free为什么还要...

    高质量C/C++编程指南(PDF)

    7.1 内存分配方式 7.2 常见的内存错误及其对策 7.3 指针与数组的对比 7.4 指针参数是如何传递内存的? 7.5 FREE 和DELETE 把指针怎么啦? 7.6 动态内存会被自动释放吗?. 7.7 杜绝“野指针”. 7.8 有了MALLOC/FREE ...

    数据结构与算法C++版

    • 内存分配和释放函数: n e w与d e l e t e。 • 异常处理结构: t r y, c a t c h和t h r o w。 • 类与模板类。 • 类的共享成员、保护成员和私有成员。 • 友元。 • 操作符重载。 本章中没有涉及的其他 C + +...

    预备知识―程序的内存分配

    一、预备知识―程序的内存分配 一个由 c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。 其操作方式类似于数据结构中的栈。 2、堆区...

    C/C++程序的内存分配与使用笔记

    一、C/C++程序的内存分配  一个C/C++程序占用的内存区一般可以分为如下五种:  ①全局/静态数据区  ②常量数据区  ③代码区  ④堆  ⑤栈  显然代码存放在代码区,而程序的数据则根据数据种类的不同放在...

Global site tag (gtag.js) - Google Analytics