社区
新手乐园
帖子详情
C++指针删除问题
csting0018
2012-08-18 03:10:17
一个线程中的方法 ProcessFunction,每隔200毫秒执行一次,方法中需要用到多个指针
int* a;
int* b;
float* c;
执行完之后,是否需要手动删除这些指针?
还是把指针设置为全局变量比较好一点?
...全文
312
19
打赏
收藏
C++指针删除问题
一个线程中的方法 ProcessFunction,每隔200毫秒执行一次,方法中需要用到多个指针 int* a; int* b; float* c; 执行完之后,是否需要手动删除这些指针? 还是把指针设置为全局变量比较好一点?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alex_s
2012-08-28
打赏
举报
回复
15楼说的对
删除完置NULL是好习惯
ForestDB
2012-08-20
打赏
举报
回复
要看指针指向哪里,既然都不是分配的空间,那么是不需要释放的。
shiter
2012-08-20
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
可能没说清楚
int* a;
int* b;
float* c;
声明之后,函数过程中几个指针都有赋值及使用,那是否还需要这样处理?
delete a;
a = NULL;
[/Quote]
这么做,没什么不好吧?
小菜菜
2012-08-20
打赏
举报
回复
如果事情内存就要释放内存,这个是规则。。
赵4老师
2012-08-20
打赏
举报
回复
{,}
fopen,fclose
malloc,free
new,delete
生,死
没有前者,何须后者?
zhaoZero41
2012-08-20
打赏
举报
回复
[Quote=引用 13 楼 的回复:]
大概流程是这样
int* a;
int* b;
float* c;
int base = 0x85684579;
//赋值
a = (int*)(base+0x56);
b = (int*)(base+0x88);
c = (float*)(base+0x92);
后面的代码a,b,c都不会改变,只参与判断
如果按照上面几个兄弟说的,应该是不用delete……
[/Quote]
不用
csting0018
2012-08-20
打赏
举报
回复
大概流程是这样
int* a;
int* b;
float* c;
int base = 0x85684579;
//赋值
a = (int*)(base+0x56);
b = (int*)(base+0x88);
c = (float*)(base+0x92);
后面的代码a,b,c都不会改变,只参与判断
如果按照上面几个兄弟说的,应该是不用delete了吧?
zhaoZero41
2012-08-20
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
可能没说清楚
int* a;
int* b;
float* c;
声明之后,函数过程中几个指针都有赋值及使用,那是否还需要这样处理?
delete a;
a = NULL;
[/Quote]
不需要。只有使用new动态分配的指针才需要用delete回收,防止内存泄露。没有用new的是静态分配,系统会在程序销毁时自动回收。
modicum_lf
2012-08-20
打赏
举报
回复
具体情况具体对待 ,有源码才好说 !
youhun_1
2012-08-20
打赏
举报
回复
如果
int* a;
int* b;
float* c;
a = new int;
b = new int;
c = new float;
使用new了,
就要
delete a;
a = NULL;
delete b;
b= NULL;
delete c;
c =NULL;
如果没用new,是别的地方传进来的,就要在传进来的地方delete
有new 必有delete,要配上对。
修巴利耶
2012-08-20
打赏
举报
回复
如何a、b、c都没有引用到new创建的内存,则不需。
有new必有delete
[Quote=引用楼主 的回复:]
一个线程中的方法 ProcessFunction,每隔200毫秒执行一次,方法中需要用到多个指针
int* a;
int* b;
float* c;
执行完之后,是否需要手动删除这些指针?
还是把指针设置为全局变量比较好一点?
[/Quote]
csting0018
2012-08-19
打赏
举报
回复
可能没说清楚
int* a;
int* b;
float* c;
声明之后,函数过程中几个指针都有赋值及使用,那是否还需要这样处理?
delete a;
a = NULL;
hlhua
2012-08-18
打赏
举报
回复
应该不需要的吧,你还没分配内存
haozw
2012-08-18
打赏
举报
回复
如是像你例子那样的非动态内存指针,在方法执行完会自动删除。
如果方法很长,在不用该指针后可以把它赋值为NULL,预防后续代码误操作。
m筱米
2012-08-18
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
这要看你那几个指针有没有指向动态申请的内存.
如果指向了,那么你就要调用delete 或者 free等手动释放内存.否则内存泄漏.
如果没有指向任何动态申请的内存,则不用管它.
[/Quote]
++
漫步者、
2012-08-18
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
int* a;
int* b;
float* c;
这些是你栈上分配的,退出函数之后会自动销毁,所以不需手动管理
[/Quote]
这个还没有内存空间,谈不上分配的,全局和动态分配各有各的好处,看你是想怎么用了,如果动态分配的话,那你在使用完之后,就释放掉吧。
xiaohuh421
2012-08-18
打赏
举报
回复
这要看你那几个指针有没有指向动态申请的内存.
如果指向了,那么你就要调用delete 或者 free等手动释放内存.否则内存泄漏.
如果没有指向任何动态申请的内存,则不用管它.
yimingxinshou
2012-08-18
打赏
举报
回复
new定义的指针需要用delete释放,这个貌似不用。个人理解。。。。。
Gloveing
2012-08-18
打赏
举报
回复
int* a;
int* b;
float* c;
这些是你栈上分配的,退出函数之后会自动销毁,所以不需手动管理
C++
指针
复制的
问题
C++
指针
复制的
问题
C++
指针
与引用
C++
指针
与引用
C++
指针
数组释放
问题
记录一个经典的
问题
,在群里有被问到这个
问题
,如下, 请问这段代码中delete[]b为什么可以正确运行呀? b1,b3同时指向了一个
指针
a,delete[]b的时候不会重复
删除
吗? 答:b为
指针
数组,也是个数组,只不过元素为
指针
; delete[]b;是释放数组b的资源,这时候b仅仅是个数组,仅释放数组b本身的资源,没有释放数组b中元素(数组)的资源, delete[]b后a的资源根本没释放掉。 ...
C++
指针
delete后还要置为null
众所周知,最开始我们用new来创建一个
指针
,那么等我们用完它之后,一定要用delete将该
指针
删掉。但是,值得注意的是,难道就仅仅是
删除
这个
指针
这么简单的么?下面,我们用一个程序来说明这个
问题
:[cpp] view plain copy#include <iostream> using namespace std; int main() { int *p=new in...
c++
智能
指针
详解
1.什么是智能
指针
从比较简单的层面来看,智能
指针
是RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制对普通
指针
进行的一层封装。这样使得智能
指针
的行为动作像一个
指针
,本质上却是一个对象,这样可以方便管理一个对象的生命周期。 在
c++
中,智能
指针
一共定义了4种: auto_ptr、unique_ptr、shared_ptr 和 weak_ptr。其中,auto_ptr 在
C++
11已被摒弃,在
C++
17中已经移除不可用。 2.原始
指针
的
问题
原始指
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章