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语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址.( ...
随机推荐
- git 格式化输出版本信息
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)&l ...
- 远程登录服务器执行cmd的Python脚本
import paramiko,os,sys ip = raw_input("input ip address :>>>") password = raw_inp ...
- 【PKUSC 2015的一道数学题】
有9个人,每三个人中至少有两个互相认识,求证这里面至少有4个人互相认识 PKU官方题解: 引理:二染色K6中一定有同色K3. 证明:考虑某一个点,它一定连出至少三条同色边(不妨设为红边),这三条边连的 ...
- 10 函数的复写-override
1.函数的复写:override 2.使用super调用父类的成员函数 class Person { String name; int age; void introduce() { System.o ...
- 纯css控制-表格表头固定,内容多时滚动内容
<html> <head> <style type="text/css"> * { margin: 0; padding: 0; } /*所有内 ...
- 【POJ 2480】Longge's problem(欧拉函数)
题意 求$ \sum_{i=1}^n gcd(i,n) $ 给定 $n(1\le n\le 2^{32}) $. 链接 题解 欧拉函数 $φ(x)$ :1到x-1有几个和x互质的数. gcd(i,n) ...
- Fiddler Post Debug
Content-Type: application/json; charset="UTF-8"
- python学习笔记10(Python的内存管理)
用这张图激励一下自己,身边也就只有一位全栈数据工程师!!! 32. Python的内存管理 1. 对象的内存使用 对于整型和短字符串对象,一般内存中只有一个存储,多次引用.其他的长字符串和其他对象 ...
- 【bzoj2245】 SDOI2011—工作安排
http://www.lydsy.com/JudgeOnline/problem.php?id=2245 (题目链接) 题意 n个产品,每个需要造C[i]件:m个员工,每个员工可以制造一些产品:每个员 ...
- 【poj1186】 方程的解数
http://poj.org/problem?id=1186 (题目链接) 题意 已知一个n元高次方程: 其中:x1, x2,…,xn是未知数,k1,k2,…,kn是系数,p1,p2,…pn是指数 ...