由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个C++中重复删除指针的问题
相关主题
C++ pointer problemdifference between: char** p and char*p[] ??
shared_ptr处理stack上面的指针请问如何使用delete释放指向指针的指针?
C++ Q87: What is wrong with this swap function? (转载)问一个关于C++指针的问题
C++问题: 指针变量是哪里产生的?请教一个const pointer的问题
容器中放置智能指针一问C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!
问个c++ struct和指针问题容器里边放指针怎么办?
不如各位高手挑个专题讲讲C++11吧这段code有啥问题?
作为返回值得实参是用指针还是引用比较好?Question about type conversion (转载)
相关话题的讨论汇总
话题: null话题: 删除话题: delete话题: c++话题: pi
进入Programming版参与讨论
1 (共1页)
f**********w
发帖数: 93
1
我知道在C++中,重复删除指针会引起不确定行为,比如下面的例子
{
int * pi = new int[10];
//....
delete [] pi;
//...
delete [] pi;
}
我的理解是这样的,第一次删除将heap上的内存交还给系统,有可能系统把这块内存写
入了新的内容,第二次删除会导致删除刚重写的内容,导致不确定行为?这样理解对马?
谢谢
t*****l
发帖数: 121
2
不对。删除后pi指向不定。系统根本无法确定要删除多少,从哪里删除。
W*********g
发帖数: 409
3
对.
a****l
发帖数: 8211
4
right. So, it is a good habit to set point to NULL after releasing it, then
you won't have this problem any more.

马?

【在 f**********w 的大作中提到】
: 我知道在C++中,重复删除指针会引起不确定行为,比如下面的例子
: {
: int * pi = new int[10];
: //....
: delete [] pi;
: //...
: delete [] pi;
: }
: 我的理解是这样的,第一次删除将heap上的内存交还给系统,有可能系统把这块内存写
: 入了新的内容,第二次删除会导致删除刚重写的内容,导致不确定行为?这样理解对马?

o*o
发帖数: 404
5
好奇c++为什么不设计成自动set the point to Null after delete memory?

then

【在 a****l 的大作中提到】
: right. So, it is a good habit to set point to NULL after releasing it, then
: you won't have this problem any more.
:
: 马?

t*****l
发帖数: 121
6
what? 难道你觉得delete一个指向NULL的指针是对的?

then

【在 a****l 的大作中提到】
: right. So, it is a good habit to set point to NULL after releasing it, then
: you won't have this problem any more.
:
: 马?

D*******a
发帖数: 3688
7
you can delete NULL without any problems.

【在 t*****l 的大作中提到】
: what? 难道你觉得delete一个指向NULL的指针是对的?
:
: then

a****l
发帖数: 8211
8
just for correction: that's not a pointer pointing to NULL, but a NULL
pointer.

【在 t*****l 的大作中提到】
: what? 难道你觉得delete一个指向NULL的指针是对的?
:
: then

h**j
发帖数: 2033
9
nod

【在 D*******a 的大作中提到】
: you can delete NULL without any problems.
o**o
发帖数: 3964
10
为什么需要这个函数修改入口的参数?btw这样要传指针的地址

【在 o*o 的大作中提到】
: 好奇c++为什么不设计成自动set the point to Null after delete memory?
:
: then

相关主题
问个c++ struct和指针问题difference between: char** p and char*p[] ??
不如各位高手挑个专题讲讲C++11吧请问如何使用delete释放指向指针的指针?
作为返回值得实参是用指针还是引用比较好?问一个关于C++指针的问题
进入Programming版参与讨论
m*****e
发帖数: 4193
11
because it's stupid

【在 o*o 的大作中提到】
: 好奇c++为什么不设计成自动set the point to Null after delete memory?
:
: then

g*****g
发帖数: 34805
12
For efficiency I suppose.

【在 o*o 的大作中提到】
: 好奇c++为什么不设计成自动set the point to Null after delete memory?
:
: then

N********n
发帖数: 8363
13

It doesn't make much difference. If two pointers point to the same
object, setting one of them to null after deletion still leaves the
other one out.

【在 o*o 的大作中提到】
: 好奇c++为什么不设计成自动set the point to Null after delete memory?
:
: then

j****r
发帖数: 28
14
agree

【在 o**o 的大作中提到】
: 为什么需要这个函数修改入口的参数?btw这样要传指针的地址
c********x
发帖数: 84
15

马?
First, the program can't be compiled, it should be:
int[] *pi = new int[10];
second, system will recycle the block of memory until the program exit, so
the rewrite the block won't happen.

【在 f**********w 的大作中提到】
: 我知道在C++中,重复删除指针会引起不确定行为,比如下面的例子
: {
: int * pi = new int[10];
: //....
: delete [] pi;
: //...
: delete [] pi;
: }
: 我的理解是这样的,第一次删除将heap上的内存交还给系统,有可能系统把这块内存写
: 入了新的内容,第二次删除会导致删除刚重写的内容,导致不确定行为?这样理解对马?

1 (共1页)
进入Programming版参与讨论
相关主题
Question about type conversion (转载)容器中放置智能指针一问
c++指针的问题问个c++ struct和指针问题
C++的smart pointer注定是个二流的东西不如各位高手挑个专题讲讲C++11吧
请教 C++ 题作为返回值得实参是用指针还是引用比较好?
C++ pointer problemdifference between: char** p and char*p[] ??
shared_ptr处理stack上面的指针请问如何使用delete释放指向指针的指针?
C++ Q87: What is wrong with this swap function? (转载)问一个关于C++指针的问题
C++问题: 指针变量是哪里产生的?请教一个const pointer的问题
相关话题的讨论汇总
话题: null话题: 删除话题: delete话题: c++话题: pi