在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局存储区(静态存储区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
希望对你有帮助
在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局存储区(静态存储区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
希望对你有帮助
C语言中指针变量是存在哪里的?
c语言的变量值是通过该变量的内存地址寻址得到的,而对于一个已经编译好的程序,变量的地址都是确定的值,不可以更改。这是因为程序在编译时编译器已经通过语法分析把指针变量的地址值计算出来了,所以指针变量实际上不用保存在内存堆栈或数据段中,而是包含在汇编代码里面。2、指针变量里面就是整型的一个...
C语言代码
两种存放的地方,一个是堆,一个是栈。放在堆上的是不会因为子函数的结束而自动释放空间,而在栈上,这里你可以理解为临时租用的空间,一旦子函数结束,马上释放。当然了,并不是堆就比栈什么都好,对栈的操作会比堆要块。你的student stu;是在一个函数中定义的他是局部变量,在c 中,局部变量被...
C语言中实参和形参分别存放在内存的什么位置?
形参只是一个符号,不会分配具体的空间的..当函数被调用的时候,具体给出的参数,也就是实参,其实是一份拷贝..它的内存空间在该函数的堆中进行分配.比如 定义函数 int add(int ,int); 在主函数中 定义变量 int x, y..调用函数 add(x, y);那么在函数add的堆中会分配出空间,来保存实参x ...
静态变量在内存中存放的位置是
静态变量在内存中存放的位置是栈区。C语言中定义的静态变量存放在栈区,动态分配的内存空间位于堆区。静态变量在内存空间中只有一份,被类的多个对象共享。局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配,但是...
.C语言的auto型变量存储在哪里
auto-自动变量-存储在stack中,函数内有效,函数结束时自动销毁 一般我们在函数内定义的变量都默认是auto的啦
C语言中全局变量存放在内存空间中那个位置
需要注意的是,如果在堆上分配了内存空间,就必须及时释放它,否则将会导致运行的程序出现内存泄漏等错误。在 C 语言中,不同类型变量的存储位置和作用域也有所不同。全局变量 从静态存储区域分配,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用。如果程序是由多个源文件构成的,那么全局...
C语言中到变量与内存的关系
3、全局区(静态区)(static)—存放全局变量、静态数据、常量。程序结束后由系统释放。4、文字常量区 —常量字符串就是放在这里的。程序结束后由系统释放。5、程序代码区—存放函数体(类成员函数和全局函数)的二进制代码。C中,宏定义的常量并不会分配空间,而是在代码预编译时替换这个宏。而const...
C语言动态变量和静态变量的区别
动态存储是指用malloc申请的在堆上分配的内存,静态存储是全局变量,和用static修饰的变量
C语言中的 局部变量,存储在什么地方?
C语言中的局部变量存储在栈里。普通的局部变量在栈空间上分配,这个局部变量所在的函数被多次调用时,每次调用这个局部变量在栈上的位置都不一定相同。局部变量也可以在堆上动态分配(malloc),但是记得使用完这个堆空间后要释放之。在栈空间上分配时是要注意内存的,不能分配内存过大。如果栈内空间小于...
我想了解c语言中内存分配问题方面的知识
static int c=0; \/\/全局区 p1=(char*)malloc(10); \/\/10个字节区域在堆区 strcpy(p1,"123"); \/\/"123\\0"在常量区,编译器 可能 会优化为和p3的指向同一块区域 } 一个C程序占用的内存可分为以下几类:(一) 栈 这是由编译器自动分配和释放的区域。主要存储函数的参数,函数的局部变量等...