[C.C++] c语言如何消除变量,如何删除C中的变量

984 0
Honkers 2025-3-21 15:13:50 来自手机 | 显示全部楼层 |阅读模式

有3种变量.根据您管理内存的种类不同.

全局变量

它们位于程序的特殊部分.它们在程序启动时出现,在程序结束时消失.你无法做任何事情来回收全局变量占用的内存.

一些更复杂的常量也可能属于该类别.您的字符串文字“我不希望这个被清除,但完全消失”很可能会驻留在那里,无论您是否将其复制到i_want_to_delete_this变量.

堆栈变量

局部变量和函数参数.它们出现在您的代码中.输入该变量的范围时会分配内存,并在离开范围时自动删除:

{ //beginning of the scope

int foo = 42; // sizeof(int) bytes allocated for foo

...

} //end of the scope. sizeof(int) bytes relaimed and may be used for other local variables

请注意,当启用优化时,可能会将局部变量提升为寄存器,并且根本不消耗RAM内存.

堆变量

堆是你自己管理的唯一一种记忆.在普通的C中,你使用malloc在堆上分配内存并免费释放它,例如

int* foo = (int*)malloc(sizeof(int)); //allocate sizeof(int) bytes on the heap

...

free(foo); //reclaim the memory

请注意,foo本身是一个局部变量,但它指向堆内存的一部分,您可以在其中存储整数.

同样认为在C中看起来像:

int* foo = new (int; //allocate sizeof(int) bytes on the heap

...

delete foo; //reclaim the memory

当变量必须比范围长得多时,通常使用堆,通常取决于一些更复杂的程序逻辑.

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4010
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行