c语言是在声明变量的同时,分配内存的吗?程序结束运行了,内存会释放吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言是在声明变量的同时,分配内存的吗?程序结束运行了,内存会释放吗?相关的知识,希望对你有一定的参考价值。

感谢回答!各种类型的变量分别占用多少的内存?

变量定义的同时,必然分配内存,但有一些的动态分配的。

例如:int 4字节;char 1字节;float 4字节,double 8字节

以下宫参考:

The memory a program uses is typically divided into four different areas:
C++将程序内存分为4个区:
The code area, where the compiled program sits in memory.
代码区:程序体所在的区域;
The globals area, where global variables are stored.
全局区:存储全局变量;
The heap, where dynamically allocated variables are allocated from.
堆:存储动态分配的变量;
The stack, where parameters and local variables are allocated from.
栈:存储参数和局部变量。
参考技术A 只要是在栈上分配的,都是在声明的时候分配了内存。如果是在堆上面分配内存的,就是在编译的时候分配

int* p = (int*)malloc(4 * sizeof(int));
p 这个指针是分配了内存的,而它指向的地址就是运行到这里才分配的

一般有这几种类型
类型 字节
char 1
short 2
int 4

自己定义的结构体就另外计算
参考技术B 声明变量比如int a;这样编译器是不会分配内存控件的,int b=10;是会分配内存控件,程序结束后会自动释放 参考技术C 声明变量比如char a;这样编译器是不会分配内存控件的;int d=1是会分配内存控件,程序结束后会自动释放 参考技术D 一般是的,但是有有一种内存分配叫动态分配内存,C里一般涉及函数有malloc,relloc,calloc,C++一般是new,这些内存分配后,一般要求程序设计者在用完后将其释放。
各类型变量所占内存字节数视系统位数而定。例如16的机子而言:char 1字节,int 2字节,float 2字节,double 8字节。

以上是关于c语言是在声明变量的同时,分配内存的吗?程序结束运行了,内存会释放吗?的主要内容,如果未能解决你的问题,请参考以下文章

内存管理

动态内存分配与指向它的指针变量

c语言分配内存方式都有哪些

何时在声明或初始化时为变量分配内存?

c语言中,声明和定义有啥区别

用C语言分配开辟内存问题