在此程序中:
#include<fstream>
#include<iostream>
int main()
{
std::ofstream *fb;
(*fb).open("file.txt",std::ios::out);
std::cout.rdbuf((*fb).rdbuf());
std::cout<<"Hello World to ALL";
return 0;
}
在运行时会给出分段故障-如此将*fb
更改为fb
会有所帮助,因为未分配空间
但是我不明白的是,为什么ofstream
对象如果需要处理的内存(file.txt
)已经存在,为什么需要分配空间?难道不像用[[C语言处理文件I / O的方式,即使用FILE
指针打开然后在不分配任何内存的情况下执行操作吗?
ofstream
指针从功能上(理论上)表示已分配内存
代表什么?std::ofstream
对象的指针,但实际上并没有使其指向任何内容。因此,当您在指向它的对象上调用open
时,根本就没有在任何有效对象上调用open
。