由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Why this is a dangling pointer
相关主题
What is the output of the following code?c ptr question
菜鸟请教smart pointerA weird C programming language--Return a pointer to array
请教 C++的一个困惑 (operator delete)delete this problem
作为返回值得实参是用指针还是引用比较好?C++里面
出个题考考大家:)[合集] 关于C++ default copy constructor
问个copy constructor的问题[合集] C++问题(copy constructor)
形参可以直接使用私有数据成员?请问delete的问题
a c++ question关于c++的constructor的面试题
相关话题的讨论汇总
话题: sample话题: somefunc话题: ptr话题: int话题: dangling
进入Programming版参与讨论
1 (共1页)
c********2
发帖数: 56
1
class Sample
{
public:
int *ptr;
Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintVal()
{
cout << "The value is " << *ptr;
}
};
void SomeFunc(Sample x)
{
cout << "Say i am in someFunc " << endl;
}
int main()
{
Sample s1 = 10;
SomeFunc(s1);
s1.PrintVal();
}
It seems perfect for me, how this lead to a dangling pointer?
S****z
发帖数: 666
2
SomeFunc那里参数传递是值传递,浅拷贝了吧

【在 c********2 的大作中提到】
: class Sample
: {
: public:
: int *ptr;
: Sample(int i)
: {
: ptr = new int(i);
: }
: ~Sample()
: {

c********2
发帖数: 56
3

什么是浅拷贝,大牛帮忙解释一下

【在 S****z 的大作中提到】
: SomeFunc那里参数传递是值传递,浅拷贝了吧
c********2
发帖数: 56
4
要怎么样改才安全
e******0
发帖数: 211
5
函数传值 sample x,
形参和实参指向同一地址,
调用函数结束后,调用x的析构函数
所以实参所指的数据也被删除

【在 c********2 的大作中提到】
: 要怎么样改才安全
c********2
发帖数: 56
6

Got you, this explain my question, thx!

【在 e******0 的大作中提到】
: 函数传值 sample x,
: 形参和实参指向同一地址,
: 调用函数结束后,调用x的析构函数
: 所以实参所指的数据也被删除

a***y
发帖数: 2803
7
你要自己弄一个 copy constructor来做deep copy.
程序2次用到copy constructor,而你的class里面有一个 ptr指针型变量.

【在 c********2 的大作中提到】
:
: Got you, this explain my question, thx!

a****l
发帖数: 8211
8
void SomeFunc(Sample *x) or
void SomeFunc(Sample &x)

【在 c********2 的大作中提到】
: 要怎么样改才安全
P********e
发帖数: 2610
9
this is not called dangling pointer.
this is called shallow copy

【在 c********2 的大作中提到】
:
: Got you, this explain my question, thx!

c**b
发帖数: 2999
10
SomeFunc(Sample *x)算constructor还是copy constructor?

【在 a****l 的大作中提到】
: void SomeFunc(Sample *x) or
: void SomeFunc(Sample &x)

相关主题
问个copy constructor的问题c ptr question
形参可以直接使用私有数据成员?A weird C programming language--Return a pointer to array
a c++ questiondelete this problem
进入Programming版参与讨论
c********2
发帖数: 56
11
class Sample
{
public:
int *ptr;
Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintVal()
{
cout << "The value is " << *ptr;
}
};
void SomeFunc(Sample x)
{
cout << "Say i am in someFunc " << endl;
}
int main()
{
Sample s1 = 10;
SomeFunc(s1);
s1.PrintVal();
}
It seems perfect for me, how this lead to a dangling pointer?
S****z
发帖数: 666
12
SomeFunc那里参数传递是值传递,浅拷贝了吧

【在 c********2 的大作中提到】
: class Sample
: {
: public:
: int *ptr;
: Sample(int i)
: {
: ptr = new int(i);
: }
: ~Sample()
: {

c********2
发帖数: 56
13

什么是浅拷贝,大牛帮忙解释一下

【在 S****z 的大作中提到】
: SomeFunc那里参数传递是值传递,浅拷贝了吧
c********2
发帖数: 56
14
要怎么样改才安全
e******0
发帖数: 211
15
函数传值 sample x,
形参和实参指向同一地址,
调用函数结束后,调用x的析构函数
所以实参所指的数据也被删除

【在 c********2 的大作中提到】
: 要怎么样改才安全
c********2
发帖数: 56
16

Got you, this explain my question, thx!

【在 e******0 的大作中提到】
: 函数传值 sample x,
: 形参和实参指向同一地址,
: 调用函数结束后,调用x的析构函数
: 所以实参所指的数据也被删除

a***y
发帖数: 2803
17
你要自己弄一个 copy constructor来做deep copy.
程序2次用到copy constructor,而你的class里面有一个 ptr指针型变量.

【在 c********2 的大作中提到】
:
: Got you, this explain my question, thx!

a****l
发帖数: 8211
18
void SomeFunc(Sample *x) or
void SomeFunc(Sample &x)

【在 c********2 的大作中提到】
: 要怎么样改才安全
P********e
发帖数: 2610
19
this is not called dangling pointer.
this is called shallow copy

【在 c********2 的大作中提到】
:
: Got you, this explain my question, thx!

c**b
发帖数: 2999
20
SomeFunc(Sample *x)算constructor还是copy constructor?

【在 a****l 的大作中提到】
: void SomeFunc(Sample *x) or
: void SomeFunc(Sample &x)

n*******e
发帖数: 62
21

都不是。只是一个普通涵数. copy constructor and constructor 是指类自己的构造
汗水。建议你在回去看看c++ 101吧。

【在 c**b 的大作中提到】
: SomeFunc(Sample *x)算constructor还是copy constructor?
O*******d
发帖数: 20343
22
SomeFunc里的ptr和s1的ptr指向同一个东西。
delete ptr; 在SomeFunc被调用。
1 (共1页)
进入Programming版参与讨论
相关主题
关于c++的constructor的面试题出个题考考大家:)
[合集] question about a static pointer in a member function问个copy constructor的问题
关于C++ copy-constructor 一个奇怪的问题形参可以直接使用私有数据成员?
关于数组a c++ question
What is the output of the following code?c ptr question
菜鸟请教smart pointerA weird C programming language--Return a pointer to array
请教 C++的一个困惑 (operator delete)delete this problem
作为返回值得实参是用指针还是引用比较好?C++里面
相关话题的讨论汇总
话题: sample话题: somefunc话题: ptr话题: int话题: dangling