如何避免"unable to read memory"
How to avoid "unable to read memory"
我有一个结构:
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中,这个值被称为
"无法读取内存"
然后我的程序崩溃了。
现在,如何检查该值是否可读?
谨致问候。
您没有初始化指针以指向任何内容,因此它是无效的。通常情况下,您无法测试指针是否指向有效对象。这取决于你是否能做到;例如:
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
但要注意,在指针可能无效但不是null的情况下,这并没有帮助;也许是因为它没有初始化,或者是因为它指向一个已被销毁的对象。
一般来说,除非你真的需要指针,否则要避免指针;如果你只想要一个对象,那么就使用一个对象:
a b(1,2); // an object
cout << b.a; // OK: b is a valid object
相关文章:
- Python ctype 'c_char_p' Memory Leak
- 使用 ImageIO.read() 生成的图像是否仍然使用传递给它的相同内存?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 模式"allocate memory or use existing data"
- write() 和 read() 中几乎没有混淆
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 为什么调试器引发"read access violation. this was nullptr"异常?
- 对同一文件使用 .read 的次数是否有限制?
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- QDataStream read to QVector
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- 为什么 void 排序(int *[], int) 会导致"Unable to read memory"?
- PInvoke "Attempted to read or write protected memory"
- C++ DLL 到 C# 错误:"Attempted to read or write protected memory. This is often an indication that other
- 如何避免"unable to read memory"
- 文件名:"error reading characters of string"和"unable to read memory"
- Windows Phone 8 - "Unable to read memory" 在 WindowPhone8 上使用 "FILE* file" (C++) 时
- 等效于 VB DLL 函数声明的 C# 返回并返回'Attempted to read or write protected memory'错误
- 对指针向量进行排序一次,然后崩溃并"unable to read memory"