由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++的一个大问题是裸指针不是对象的身份证
相关主题
关于C++中const的问题内存泄露了吗?
为啥指针读出的数值十分巨大或者十分小?问个c++指针问题
问两个C++面世小问题difference between: char** p and char*p[] ??
C++里能否在运行时check一个object里的member的名字,并且找出其指针?C++ pointer problem
c++指针的问题A C++ runtime type casting question
琢磨了一下c++ smart pointer,发现不能到处用C++ 科学计算中的常量
程序中的各个变量/数组的内存地址是否会混在一起?问个C++中重复删除指针的问题
有人用Boost.MPI吗?问一个关于C++指针的问题
相关话题的讨论汇总
话题: p1话题: ptr话题: objecta话题: p2话题: isvalid
进入Programming版参与讨论
1 (共1页)
N******K
发帖数: 10202
1
p1= new (objectA);
delete p1;
p2= new (objectA);
这时候 p1的值和p2的值是一样的 但是 两个指针代表了两个实例 尽管都属于同一类
这样 IsValid(p2) 会返回 ture 但是 IsValid(p1)也会返回true
如果有一个类似weak_ptr的 但是不用lock 能直接用的智能指针就好了
可以用 shared_ptr() 把deletor 给设置为空操作
其实需要的是 handle_ptr
std::handle_ptr hp(new ObjectA)
std::shared_ptr sp=hp; 就可以进行转换
l*********s
发帖数: 5409
2
set an id field in the constructor

【在 N******K 的大作中提到】
: p1= new (objectA);
: delete p1;
: p2= new (objectA);
: 这时候 p1的值和p2的值是一样的 但是 两个指针代表了两个实例 尽管都属于同一类
: 这样 IsValid(p2) 会返回 ture 但是 IsValid(p1)也会返回true
: 如果有一个类似weak_ptr的 但是不用lock 能直接用的智能指针就好了
: 可以用 shared_ptr() 把deletor 给设置为空操作
: 其实需要的是 handle_ptr
: std::handle_ptr hp(new ObjectA)
: std::shared_ptr sp=hp; 就可以进行转换

N******K
发帖数: 10202
3
id=construction time+ thread id
good idea

【在 l*********s 的大作中提到】
: set an id field in the constructor
t*****n
发帖数: 4908
4
114人浏览,没人看出有毛病?现在的学生都不写c了?下巴都掉了。

【在 N******K 的大作中提到】
: p1= new (objectA);
: delete p1;
: p2= new (objectA);
: 这时候 p1的值和p2的值是一样的 但是 两个指针代表了两个实例 尽管都属于同一类
: 这样 IsValid(p2) 会返回 ture 但是 IsValid(p1)也会返回true
: 如果有一个类似weak_ptr的 但是不用lock 能直接用的智能指针就好了
: 可以用 shared_ptr() 把deletor 给设置为空操作
: 其实需要的是 handle_ptr
: std::handle_ptr hp(new ObjectA)
: std::shared_ptr sp=hp; 就可以进行转换

N******K
发帖数: 10202
5
有啥毛病?
我的意思是 将object的地址注册 isvalid 通过判断是否注册过来决定 这种方法无效

【在 t*****n 的大作中提到】
: 114人浏览,没人看出有毛病?现在的学生都不写c了?下巴都掉了。
t*****n
发帖数: 4908
6
p1 p2 ?

【在 N******K 的大作中提到】
: 有啥毛病?
: 我的意思是 将object的地址注册 isvalid 通过判断是否注册过来决定 这种方法无效

N******K
发帖数: 10202
7
你觉得这两个名字不够洋气?
改为 tom jerry?

【在 t*****n 的大作中提到】
: p1 p2 ?
t****t
发帖数: 6806
8
你这么做的目的是什么?
如果你需要每个new返回不同的值, 有现成的模拟器(valgrind这类的)可以帮你做到这
一点.

【在 N******K 的大作中提到】
: p1= new (objectA);
: delete p1;
: p2= new (objectA);
: 这时候 p1的值和p2的值是一样的 但是 两个指针代表了两个实例 尽管都属于同一类
: 这样 IsValid(p2) 会返回 ture 但是 IsValid(p1)也会返回true
: 如果有一个类似weak_ptr的 但是不用lock 能直接用的智能指针就好了
: 可以用 shared_ptr() 把deletor 给设置为空操作
: 其实需要的是 handle_ptr
: std::handle_ptr hp(new ObjectA)
: std::shared_ptr sp=hp; 就可以进行转换

t*****n
发帖数: 4908
9
IT科学家?还是先读读C的书吧。

【在 N******K 的大作中提到】
: 你觉得这两个名字不够洋气?
: 改为 tom jerry?

l*********s
发帖数: 5409
10
syntax error? dangling pointer?

【在 t*****n 的大作中提到】
: 114人浏览,没人看出有毛病?现在的学生都不写c了?下巴都掉了。
相关主题
琢磨了一下c++ smart pointer,发现不能到处用内存泄露了吗?
程序中的各个变量/数组的内存地址是否会混在一起?问个c++指针问题
有人用Boost.MPI吗?difference between: char** p and char*p[] ??
进入Programming版参与讨论
N******K
发帖数: 10202
11
在写注册类的时候发现的问题
p=new(object);
ObjectRegistrar.register(p);
如果两个object紧连着new和delete
比如
p1=new(object);
delete p1
p2=new(object)
ObjectRegistrar object表格里面 key是 raw pointer 这个时候就不唯一了
ObjectRegistrar.IsValid(p) 这样的操作毫无意义了

【在 t****t 的大作中提到】
: 你这么做的目的是什么?
: 如果你需要每个new返回不同的值, 有现成的模拟器(valgrind这类的)可以帮你做到这
: 一点.

N******K
发帖数: 10202
12
你就不能把问题直说么 ?

【在 t*****n 的大作中提到】
: IT科学家?还是先读读C的书吧。
z*******3
发帖数: 13709
13
都交给学ee的去搞了
以后ce和ee将会彻底同化成一个专业
你悲愤也没用

【在 t*****n 的大作中提到】
: 114人浏览,没人看出有毛病?现在的学生都不写c了?下巴都掉了。
t****t
发帖数: 6806
14
本来就毫无意义, 我的问题是, 你register了想要干嘛, 如果只是查错(isvalid), 有现
成的工具, 不需要发明轮子.

【在 N******K 的大作中提到】
: 在写注册类的时候发现的问题
: p=new(object);
: ObjectRegistrar.register(p);
: 如果两个object紧连着new和delete
: 比如
: p1=new(object);
: delete p1
: p2=new(object)
: ObjectRegistrar object表格里面 key是 raw pointer 这个时候就不唯一了
: ObjectRegistrar.IsValid(p) 这样的操作毫无意义了

N******K
发帖数: 10202
15
就是想搞轮子
有啥好工具?

有现

【在 t****t 的大作中提到】
: 本来就毫无意义, 我的问题是, 你register了想要干嘛, 如果只是查错(isvalid), 有现
: 成的工具, 不需要发明轮子.

t****t
发帖数: 6806
16
不是说了valgrind吗? 要交钱的有purify...

【在 N******K 的大作中提到】
: 就是想搞轮子
: 有啥好工具?
:
: 有现

N******K
发帖数: 10202
17
valgrind 不支持windows

【在 t****t 的大作中提到】
: 不是说了valgrind吗? 要交钱的有purify...
t****t
发帖数: 6806
18
不是还有purify吗?

【在 N******K 的大作中提到】
: valgrind 不支持windows
N******K
发帖数: 10202
19
没钱啊

【在 t****t 的大作中提到】
: 不是还有purify吗?
t****t
发帖数: 6806
20
多新鲜啊, 没钱能办什么事.

【在 N******K 的大作中提到】
: 没钱啊
p***o
发帖数: 1252
21
Try the CRT Debug Library on MSVC.

【在 N******K 的大作中提到】
: 没钱啊
h*****a
发帖数: 1718
22
lol

【在 t****t 的大作中提到】
: 多新鲜啊, 没钱能办什么事.
1 (共1页)
进入Programming版参与讨论
相关主题
问一个关于C++指针的问题c++指针的问题
How does template work in C++琢磨了一下c++ smart pointer,发现不能到处用
JAVA和C++语言在各个层面上的区别与联系程序中的各个变量/数组的内存地址是否会混在一起?
JAVA和C++语言在各个层面上的区别与联系 (转载)有人用Boost.MPI吗?
关于C++中const的问题内存泄露了吗?
为啥指针读出的数值十分巨大或者十分小?问个c++指针问题
问两个C++面世小问题difference between: char** p and char*p[] ??
C++里能否在运行时check一个object里的member的名字,并且找出其指针?C++ pointer problem
相关话题的讨论汇总
话题: p1话题: ptr话题: objecta话题: p2话题: isvalid