c语言中变量所分配的内存空间大小

c语言中变量所分配的内存空间大小,第1张

变量的类型决定。C语言中变量总体分为全局变量,局部变量以及动态分配内存的变量。它们在内存中占据的存储区是不同的,全局变量一般分配在静态存储区。非静态的局部变量(包括形参)一般分配在内存中的动态存储区,这个存储区是一个称为栈的区域。除此之外C语言还允许建立内存动态分配区域,以存放一些临时的数据,这些变量不需要在程序的声明部分定义,也汪凳闭不需要等到函数结束自困裂动释放空间。这些数据被存储在特别的自由存储区,称为堆区。可以根据需要,向系统申请所需大小的空间。由于未粗拦在申明部分,定义他们为变量或数组,因此不能通过变量名或数组名去引用这些数据,只能通过指针来引用。

需要程序进入调试昌孙运行状态。

查看变量内存,是需要程序进入调试运行状态才有的,因为只有程序运行起来了,才有查看内存的说法,如果程序都没有运行,程序都不在内存里就无法查看。

查看变量的内存数据,是程序员进此睁阶需要知道的,在跟踪变量的数据变化的时候,能够直观的看到内存数据,可以大大提高耐扒链调试的效率。

一个由C/C++编译的程序占用的内存分为以拆耐下几个部分,

1、栈区(stack)—

由编译器自动分配释放

,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。其 *** 作方式类似橘御顷于数据结构中的栈。

2、堆区(heap)

一般由程序员分配释放,

若程序员不释放,程序结束时可能由OS回收

。分配方式类似于链表。

3、全局区(静态区)(static)—存放全局变量、静态数据、常量。程序结束后由系统释放。

4、文字常量区

—常量字符串就是放在这里的。

程序结束后由系统释放。

5、程序代码区—存放函数体(类成员函数和全局函数)的二进制代码。

C中,宏定义的常量并不会分配空间,而是在代码预圆陆编译时替换这个宏。而const修改的常量,需要根据这个常量定义而定,比如如果是全局数据则会在全局区分配空间,而局部数据会在栈区分配。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12333943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存