gpt4 book ai didi

c++ - 如何避免 "unable to read memory"

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:09 25 4
gpt4 key购买 nike

我有一个结构:

struct a {
a(){};
a(int one,int two): a(one),b(two){};
int a;
int b;
int c;
}

a * b;
cout << b->c;

有时当我想读取(例如)c 并且在 debbuger 中这个值被称为

'unable to read memory'

然后我的程序崩溃了。

现在,如何检查该值是否可读?

最好的问候。

最佳答案

你还没有初始化指向任何东西的指针,所以它是无效的。通常,您无法测试指针是否指向有效对象。由您来确保它确实如此;例如:

a obj(1,2);    // an object
a * b = &obj; // a pointer, pointing to obj;
cout << b->a; // OK: b points to a valid object

如果您不想让指针指向任何东西,您可以将指针设为null。您不能取消引用它,但可以测试空指针:

a * b = nullptr;     // or 0, in ancient dialects
if (b) cout << b->a; // OK: test prevents dereferencing
cout << b->a; // ERROR: b is null

但是请注意,这在指针可能无效但不为空的情况下无济于事;可能是因为它没有被初始化,或者因为它指向一个已经被销毁的对象。

一般来说,除非你确实需要它们,否则避免使用指针;并注意不要使用无效的指针。如果你只想要一个对象,那么就使用一个对象:

a b(1,2);     // an object
cout << b.a; // OK: b is a valid object

关于c++ - 如何避免 "unable to read memory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25893840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com