吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 797|回复: 9
收起左侧

[求助] c++的局部变量,能否被提前手动释放?

  [复制链接]
1097758887 发表于 2023-3-25 11:29
我们知道c++中的局部变量,在函数结束后会自动释放

但是,假定我这个函数是一个死循环的函数。不会运行结束,那这样我的局部变量就会一直占用内存空间。我该怎样提前释放它?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xia先生 发表于 2023-3-25 11:38
你要弄清楚什么是局部变量?这个变量里面存的是指针还是数值?都可以 赋值0来清除。但是如果你认为是堆栈。那你可以用汇编pop掉他
psvajaz 发表于 2023-3-25 11:42
把变量定义在循环外,一直复用这个变量,就不会要考虑资源释放问题
xlhwxyh 发表于 2023-3-25 13:30
Eaglecad 发表于 2023-3-25 14:46
需要手动释放的内存一定是程序申请的堆内存。
栈内存,只要不是存在无限递归,不会存在内存泄漏问题。
局部变量是指针 new malloc 需要手动 delete free 释放,智能指针,循环利用需要reset,最后可release释放。
如果死循环中只调用一次某个函数,call_once了解一下。
比如 循环外char* szBuf = new char[1024]{ 0 }; 循环里重复使用时,memset(szBuf, 0, nBufLen);,循环外 delete []szBuf。
循环内char* szBuf = new char[1024]{ 0 }; 循环里重复使用时,memset(szBuf, 0, nBufLen);,循环内 delete []szBuf,否则就会内存泄漏。
metoo2 发表于 2023-3-25 14:47
psvajaz 发表于 2023-3-25 11:42
把变量定义在循环外,一直复用这个变量,就不会要考虑资源释放问题

正解,楼主提出的问题好奇怪,不停的分配与释放么
JuncoJet 发表于 2023-3-25 16:35
栈不需要释放,在一个过程中不增不减
递归的时候就会比较麻烦
jamesAbc 发表于 2023-3-25 16:43
肯定不行啊
永驻的青春 发表于 2023-3-25 16:48
注意你的作用域,一般用花括号括起来就好了(花括号就是作用域)。就是,你在花括号里面声明了,函数运行到花括号外面自动就释放了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表