C++ 内存管理与堆栈
/*内存管理与堆栈:
* # 一个由C/C++编译的程序占用的内存分为以下几个部分
* 1.栈区:由编译器自动分配释放,数据先进后出
* 2.堆区:由程序员手动分配释放,数据先进先出,
* new 和 delete,malloc 和 free 配合使用
* 3.全局区,静态区:全局变量和静态变量的存储是放在一块的,
* 初始化的全局变量和静态变量在一块区域,
* 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,
* 程序结束后有系统释放
* 4.文字常量区:常量字符串就是放在这里的
* 5.程序代码区:存放函数体的二进制代码
* # 内存泄漏
* 1.用动态存储分配函数动态开辟的空间,
* 在使用完毕后未释放,
* 结果导致一直占据该内存单元,
* 直到程序结束
* 2.个别的内存泄漏可能不会出现大的问题,
* 但是像在循环函数中忘记释放申请到的内存的话,
* 会榨干系统内存的,
* 到时系统就会出现停止响应等等问题
* 3.指针变量定义时就初始化 nullptr 有助于防止内存泄漏
*/
#include <iostream>
using namespace std;
int main()
{
/*易混淆的概念:
* 1. 声明还是定义?
* 2. & 引用还是取址?
* 3. * 指针还是取值?
*/
extern int x; //前缀 extern,声明 x 而非定义 x,记住不要显示初始化变量
int y = 2; //声明并定义 y,最好习惯于显示初始化变量
int &i = y; //等号左侧 & 与类型名 int 靠近为引用,意为把 y 的值传给 i
int *j = &y; //等号左侧 * 与类型名 int 靠近为指针,等号右侧 & 为取 y 的地址赋予指针变量 j
int z = *j; // j 保存了 y 的地址,等号右侧 * 为取值,由地址 j 取出 y 的值
cout<<"y = "<<y<<endl;
cout<<"i = "<<i<<endl;
cout<<"j = "<<j<<endl;
cout<<"z = "<<z<<endl;
return 0;
}

#include <iostream>
#include <string> using namespace std; void show(string *s); // 函数参数传指针 int main()
{
string c;
c = "ABDEL";
string *p;
p = &c;
show(p);
return 0;
} void show(string *s)
{
cout<<*s<<endl;
}

C++ 内存管理与堆栈的更多相关文章
- 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...
- 全面介绍Windows内存管理机制及C++内存分配实例
转自:http://blog.csdn.net/yeming81/article/details/2046193 本文基本上是windows via c/c++上的内容,笔记做得不错.. 本文背景: ...
- .NET基础拾遗(1)类型语法基础和内存管理基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- linux内存管理
一.Linux 进程在内存中的数据结构 一个可执行程序在存储(没有调入内存)时分为代码段,数据段,未初始化数据段三部分: 1) 代码段:存放CPU执行的机器指令.通常代码区是共享的,即其它执行程 ...
- Linux堆内存管理深入分析(上)
Linux堆内存管理深入分析(上半部) 作者:走位@阿里聚安全 0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏洞 ...
- 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个<WCF分布式开发必备知识>系列后的一次休息吧.以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会 ...
- MMU内存管理单元相关知识点总结
1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件 ...
- 十.oc内存管理
引用百度百科图 栈(stack)又名堆栈. 栈定义:栈是限定仅在表头进行插入和删除操作的线性表(有序).(又称:后进先出表) (动态)数据展示存储的地方.(举例:升降电梯)特点:先进后出(FILO—F ...
- Linux内存管理基本概念
1. 基本概念 1.1 地址 (1)逻辑地址:指由程序产生的与段相关的偏移地址部分.在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址.( ...
随机推荐
- 【转】如何建立一个样式新颖的CSS3搜索框
在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...
- 【UR #2】树上GCD
这道题是有根树点分治+烧脑的容斥+神奇的分块 因为是规定1为根,还要求LCA,所以我们不能像在无根树上那样随便浪了,必须规定父亲,并作特殊讨论 因为gcd并不好求,所以我们用容斥转化一下,求x为gcd ...
- 利用SpringAOP 实现 日志输出
目的: 需要对一些事物的操作进行日志记录,如果在service内进行记录,大量的代码重复,并且维护比较麻烦.所以采用AOP的方式对service进行拦截.使用自定义注解的目的则是判断是否需要记录日志和 ...
- MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令
介绍背水一战 Windows 10 之 MVVM(Model-View-ViewModel) 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令 ...
- UVa 673 Parentheses Balance
一个匹配左右括号的问题 /*UVa 673 Parentheses Balance*/ #include<iostream> #include<algorithm> #incl ...
- struts2 CVE-2013-2251 S2-016 action、redirect code injection remote command execution
catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1 ...
- POJ2010 Moo University - Financial Aid(二分法)
题目地址 分析:如果用二分法,关键是score和aid分开排序,score排序是为了充分利用中位数的性质,这样就可以确定m左右必须各选N/2个,到这之后有人是用dp求最优解,可以再次按照aid排序一次 ...
- [U3D 导出Xcode工程包,用Xcode给U3D脚本传递参数]
1.导出Xcode工程 File->Building and setting,导出IOS工程(有错误会失败) 2.运行Xcode工程,在Classes文件夹的UI文件夹里,早到UnityAppC ...
- js事件委托的方式绑定详解
js事件绑定 事件绑定,这里使用了冒泡的原理,从点击的元素开始,递归方式的向父元素传播事件,这样做的好处是对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能. ...
- 【转载】MFC键盘响应
转载自:传送门 一:首先介绍键盘消息 系统消息: ALT,F1,--F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键. WM_SYSKEYDOWN WM_SYSKEYUP WM_SYSC ...