C++ 使用ifstream时检测到堆栈崩溃的原因是什么?

C++ 使用ifstream时检测到堆栈崩溃的原因是什么?,c++,clang++,C++,Clang++,今天,我在使用clang++和ifstream时遇到了异常错误: *** stack smashing detected ***: <unknown> terminated 有人知道为什么吗?原因是什么?也许是一些UB?在: fileStream.read(reinterpret_cast<char*>(&filesAmount), 16); 您可能应该检查read的返回值,以确保它成功: if(!fileStream.read(reinterpret_cas

今天,我在使用
clang++
ifstream
时遇到了异常错误:

*** stack smashing detected ***: <unknown> terminated
有人知道为什么吗?原因是什么?也许是一些UB?

在:

fileStream.read(reinterpret_cast<char*>(&filesAmount), 16);
您可能应该检查
read
的返回值,以确保它成功:

if(!fileStream.read(reinterpret_cast<char*>(&filesAmount), sizeof filesAmount))
    // Handle read failure.
if(!fileStream.read(reinterpret_cast(&filesmount))和sizeof filesmount)
//处理读取失败。

这是未定义的行为

fileStream.read(reinterpret_cast<char*>(&filesAmount), 16);

Eeek;寻找魔法数字,
重新解释施法
,两个红旗就在那里。我们能不能看到a,这样我们就可以知道错误在哪里?伙计们,如果没有它,告诉我错误在哪里。看,我给问题的存在你不需要更多的代码,这是足够的。谢谢你的解释!几分钟后我可能会把它标为最佳答案。
fileStream.read(reinterpret_cast<char*>(&filesAmount), sizeof filesAmount);
if(!fileStream.read(reinterpret_cast<char*>(&filesAmount), sizeof filesAmount))
    // Handle read failure.
fileStream.read(reinterpret_cast<char*>(&filesAmount), 16);
fileStream.read(reinterpret_cast<char*>(&filesAmount), sizeof(filesAmount));