程序与内存分布
zzjxiaozi
这个作者很懒,什么都没留下…
展开
-
内存分配——静态存储区 栈 堆
一、内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的转载 2013-01-09 00:25:48 · 1148 阅读 · 1 评论 -
常量字符串为什么位于静态存储区?
常量字符串为什么位于静态存储区? char *c="chenxi"; 书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。 那一般的int i=1; 1也是常量,为什么1就不被放置在此程序的内存静态区了呢? 所有的字符窜常量都被放在静态内存区 因为字符串常量很少需要修改,放在静态内存区会提高效率 例: char str1[] = "abc"; char转载 2013-01-09 00:28:28 · 606 阅读 · 1 评论 -
c/c++程序在内存中的分布
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。 2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(转载 2013-01-22 12:33:13 · 937 阅读 · 1 评论