
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
内存管理的问题我们在前几期的文章中曾经给大家讲解过很多次了,而本文我们就再来学习一下,C语言内存管理都有哪些注意事项。
内存四区
一个C\C++编译的程序占用内存的四个区:
栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事。
数据区(Data):主要包括静态全局区和常量区,如果要站在汇编角度细分的话还可以分为很多小的区。全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量。4、代码区(Code):存放函数体的二进制代码。
代码区(Code):存放函数体的二进制代码。
栈(stack):向下生长(填坑)
堆(heap):向上生长(柴火)
Heap、stack生长方向和内存存放方向是两个不同概念
内存四区和函数调用变量传递:一个单进程主程序有n个函数组成,C/C++编译器只会分配一个堆区,一个栈区。
内存相关函数
C语言为内存的分配和管理提供了几个函数。这些函数可以在
calloc()
分配num个长度为size的连续空间,并返回一个指向它的指针。calloc会将分配内存地址上的值初始化为0。
动态分配内存
注意:void*类型表示未确定类型的指针。C、C++规定void*类型可以通过类型转换强制转换为任何其它类型的指针。
编程时,如果您预先知道数组的大小,那么定义数组时就比较容易。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。