设为首页 - 加入收藏
广告 1000x90
您的当前位置:144177黄大仙有求必应 > 静态存储分配 > 正文

C++中静态数组不用释放内存吗

来源:未知 编辑:admin 时间:2019-07-03

  答,静态数组的长度是固定的,不能根据应用程序的需要改变,而动态内存分配可满足此需求。

  我想问,什么意思啊,怎么理解这句话?是静态数组分配的内存不用释放吗?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  比如,你写一个数组用来存放一个班所有人的数学成绩,如果你知道这个班一共有50个人,那好办,直接

  在这里由于student_count在编译时是未知的,所以编译阶段编译器无法知道需要为该数组分配多少内存,只有在运行时用户输入数据的时候才能确定,所以这就需要运行时为该数组动态分配内存。

  动态分配的内存,实际在堆上,系统没法自动帮你去释放堆上的内存,需要你自己写free或者delete来告诉操作系统需要帮你去释放堆上哪个位置的内存。

  内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。

  栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。

  堆和栈的第一个区别就是申请方式不同:栈(英文名称是stack)是系统自动分配空间的,例如我们定义一个 char a;系统会自动在栈上为其开辟空间。而堆(英文名称是heap)则是程序员根据需要自己申请的空间,例如malloc(10);开辟十个字节的空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。而堆上的数据只要程序员不释放空间,就一直可以访问到,不过缺点是一旦忘记释放会造成内存泄露。

  如果你程序里面需要存储所有学生的年龄,那么用静态数组,你就必须定义一个最大的数组

  比如 int ages[100] 。如果某个班上有101个人咋办,程序又要重写,改大数组 改成int ages[200] ?永远没有尽头,永远没有最大。。

本文链接:http://that-a-way.com/jingtaicunchufenpei/279.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top