运行时检查失败-变量未初始化就被使用
Run-time check failure - variable being used without being initialized
下面的代码产生了这样的错误:
运行时检查失败#3 -变量'IBlockObject'正在使用而未初始化
我真的被这个卡住了。我知道有一个初始化问题,但我不知道如何解决它。下面是代码:
typedef struct{ //ISTATUS Structure
long statusBit;
}ISTATUS;
typedef struct{ // INODE Structure
char fileName[20];
long INodeNumber;
long BlockAddress;
long NextINodeAddress;
}INODE;
typedef struct{ //IBLOCK Structure
long BlockNumber;
}IBLOCK;
ISTATUS IStatusObject;
INODE INodeObject;
IBLOCK IBlockObject;
InitializeStructures(IStatusObject, INodeObject, IBlockObject);
我假设您指的是c++,我假设InitializeStructures
的签名是:
void InitializeStructres(ISTATUS a, INODE b, IBLOCK c)
问题是您通过值传递对象。InitializeStructures
将获得您传入的这些对象的副本,并且InitializeStructures
所做的任何事情都不会反映在您传入的对象上。
这将导致错误,因为复制操作。你试图复制一个对象("使用"该对象),而没有初始化它。
我假设你想让函数签名如下:
void InitializeStructres(ISTATUS& a, INODE& b, IBLOCK& c)
使InitializeStructures
不复制对象;相反,它将直接操作通过引用传入的对象。
快速注意:你的类型/变量命名真的不标准。像IStatusObject
这样的名称通常是接口(例如IUnknown
)。而全大写的名字通常是遗留的或C符号。
相关文章:
- 为什么我的 c++ 程序检查不是初始化的变量?
- 为什么需要检查 GLAD 或 GLEW 是否正确初始化?
- C++ 如何检查 char 变量是否未定义(未初始化)
- 我可以检查初始化列表中设置的构造函数主体中的变量吗
- 初始化期间针对安全检查的指针的恒定正确性
- C++,检查当我无法使用 NULL/0 时是否初始化了变量
- 检查对是否为空或未初始化
- C++ 编译时检查微控制器引脚是否已从其他源文件初始化
- 执行输入检查并在C++中初始化对象
- 检查向量是否在某个位置未初始化
- 在 do-while 循环中初始化字符串将在检查条件之前跳转到它
- 在构造函数中初始化const字段,但首先检查一个参数
- 有没有办法检查地图是否已在 C++98 中初始化
- 迭代器unordered_map - 如何检查未初始化的元素
- 检查使用初始化列表时传递给构造函数的参数 - C++
- 如何使用双重检查锁来初始化shared_ptr
- C++11:对延迟初始化进行安全的双重检查锁定.可能的
- 检查无符号字符的std:array是否已初始化是一种好做法
- 运行时检查失败 #3 - 变量"result"在未初始化的情况下被使用
- 我有一个指向自定义项的未初始化指针表,我想检查是否已经存在某些内容