_block_type_is_valid(phead- nblockuse)因为删除命令
_block_type_is_valid(phead- nblockuse) because of delete command
ifstream ifile("Library.dat",ios::in|ios::binary);
Book *book_obj=new Book; //Book is the class name
if(ifile)
{
while(ifile.read((char*)book_obj,sizeof(Book)))
book_obj->Display_BookDetails();
}
ifile.close();
delete book_obj; //Runtime Error is coming here.If I comment out this, then it works fine
我正在从名为 Library.dat 的文件中读取内容。当我执行上面的代码时,我收到运行时错误访问冲突读取位置0x004B9B44。注释掉删除book_obj工作得很好。我应该如何删除book_obj以阻止内存泄漏。
您的类包含非 POD 成员。您无法在不遇到问题的情况下将结构读取为字节块。您必须通过创建自己的 std::istream& operator>>(std::istream&, Book&)
函数自行序列化:
std::istream& operator>>(std::istream& is, Book& b)
{
// extract individually into b's data members
}
现在您可以执行以下操作:
while (ifile >> book_obj)
{
book_obj->Display_BookDetails();
}
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 注意:"Entity_c::Entity_c(const Entity_c&)"被隐式删除,因为默认定义格式不正确:
- 被隐式删除,因为默认定义格式不正确:
- 不能分配 X 类型的对象,因为它的复制运算符隐式删除
- C++构造函数被隐式删除,因为默认定义的格式不正确
- 错误:隐式删除,因为默认定义格式不正确(结构向量)
- 函数不能被引用,因为它是一个已删除的函数
- _block_type_is_valid(phead- nblockuse)因为删除命令
- Pair(const std::p air<_T1, _T2>&) 被隐式删除,因为默认定义格式不正确 错误:分配unique_ptr映射时
- 测试答案是错的,对吗?它不会崩溃,因为我们删除NULL指针,这是安全的
- C++程序的断言失败,因为删除指针
- SFML C++联合构造函数被隐式删除,因为默认定义格式不正确
- unique_ptr无法删除SDL_Window,因为它是不完整的类型(VC++ Express 2013)
- 复制构造函数被隐式删除,因为默认定义的格式不正确