C/C++:程序的内存分配方式
代码区(code area)
|
程序内存空间
|
全局数据区(data area)
|
|
堆区(heap area)
|
|
栈区(stack area)
|
int a = 0; //全局初始化区
char *p1; //全局未初始化区
int main() {
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //123456\0在常量区,p3在栈上。
static int c =0;//全局(静态)初始化区
p1 = new char[10];
p2 = new char[20];
//分配得来得和字节的区域就在堆区。
strcpy(p1, "123456"); //123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}
|
intmain(){
char a = 1;
char c[] = "1234567890";
char *p ="1234567890";
a = c[1];
a = p[1];
return 0;
}
|
10: a = c[1];
00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh] 0040106A 88 4D FC mov byte ptr [ebp-4],cl 11: a = p[1]; 0040106D 8B 55 EC mov edx,dword ptr [ebp-14h] 00401070 8A 42 01 mov al,byte ptr [edx+1] 00401073 88 45 FC mov byte ptr [ebp-4],al |
class Time{
public:
Time(int,int,int,string);
~Time(){
cout<<"call Time's destructor by:"<<name<<endl;
}
private:
int hour;
int min;
int sec;
string name;
};
Time::Time(int h,int m,int s,string n){
hour=h;
min=m;
sec=s;
name=n;
cout<<"call Time's constructor by:"<<name<<endl;
}
int main(){
Time *t1;
t1=(Time*)malloc(sizeof(Time));
free(t1);
Time *t2;
t2=new Time(0,0,0,"t2");
delete t2;
system("PAUSE");
return EXIT_SUCCESS;
}
|
C/C++:程序的内存分配方式相关推荐
- C语言程序的内存分配方式
1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. [2]在栈上创建.在执行函数 ...
- [转]预备知识—程序的内存分配
因为经典,所以转发. 一.预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack) - 由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方 ...
- 程序的内存分配之堆和栈的区别
堆栈概述 在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存 ...
- C/C++内存分配方式 .
1.内存分配方式 内存分配方式有三种: [1]从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. [2]在栈上创建.在执行函数时 ...
- 内存分配方式以及堆和栈的区别
转载:https://blog.csdn.net/shanchangyi/article/details/51854795 对于一个程序要运行,涉及到的内存分配是一个首要问题,这里简单说一下一个简单的 ...
- C++内存分配方式、内存错误及其对策
C++内存分配方式.内存错误及其对策 内存分配方式有三种: 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. 在栈上创建.在执 ...
- C++中内存分配方式、空指针及野指针的区别
一.C++中内存分配方式可以分为三种: (1)从静态存储区域分配: 内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在.速度快.不容易出错,因为有系统会善后.例如全局变量,static变 ...
- MFC 教程【10_内存分配方式和调试机制 】
内存分配方式和调试机制 M内存分配 内存分配函数 MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用. Win32的堆分配函数 每一个进程都可以使用堆分配函数创建一个私有的堆── ...
- 程序的内存分配----变量在可执行文件中的内存区分配
一. 预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分: 程序代码区(.text) - 存放函数体的二进制代码 文字常量区(.rodata) - 常量字符串就是 ...
最新文章
- Dialog 带白色的边的处理方法
- 使用ajax和history.pushState无刷新改变页面URL
- Exchange server 2007 出现“0x8004010F”错误的解决办法
- java是如何实现原语的_Java中的低GC:使用原语而不是包装器
- react学习(31)----react父传子
- 一个整数转换成字符串(C/C++自己写的算法)
- 【Apache】Apache ab压力测试工具Window下载和用法详解
- 有人说学了C语言,两天就能学会Java,两个星期就可以找工作?
- 小米:近期发现5件恶意抢注批量申请Redmi商标事件
- 【OCR技术】字符识别技术总览
- python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
- java小软件_JAVA小应用程序 。。。。。。。。。。。
- Ubuntu安装SSTP
- 【安全牛学习笔记】端口扫描
- 通达 oa 2017 mysql 密码,修改通达OA Mysql数据库密码
- 中南大学复试上机: 彩色气球
- 详解TCP 三次握手和四次挥手
- Qt图形视图框架:视图增加标尺
- 如何 修改 系统 用户名称 和登陆名称
- 泰肯星球(Token Planets)基于EOS区块链技术的虚拟游戏
热门文章
- windows下使用docker(一)—— 安装
- UI 控件 —UITextFile
- 编码 Unicode utf-8
- C实战:项目构建Make,Automake,CMake
- 1083 矩阵取数问题
- MVVM模式的3种command总结[2]--RelayCommand
- Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题
- 性能标准两腿走:IE9平台预览版初步体验
- ABAP:向自建表写入数据时,需要注意的问题
- 牛客网(剑指offer) 第十四题 链表中倒数第k个节点