C++指针删除问题

csting0018 2012-08-18 03:10:17
一个线程中的方法 ProcessFunction,每隔200毫秒执行一次,方法中需要用到多个指针

int* a;
int* b;
float* c;

执行完之后,是否需要手动删除这些指针?

还是把指针设置为全局变量比较好一点?
...全文
312 19 打赏 收藏 转发到动态 举报
写回复
用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;
这些是你栈上分配的,退出函数之后会自动销毁,所以不需手动管理

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧