gpt4 book ai didi

c++ - SIGABORT 将文件读入双指针时

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:43 24 4
gpt4 key购买 nike

运行此代码时,我收到 SIGABORT。我发现我应该使用方括号,但为什么行为是相同的。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
double * dp = new double (5); // what do round brackets mean, and why the behvior

std::ifstream fid("testdata.txt");
fid >> dp[0] >> dp[1] >> dp[2] >> dp[3] >> dp[4];
fid.close();
}

“testdata.txt”的内容是:

4.0 5. 6. 6. 8. 7. 952.

只有当文件中有 5 个或更多 double 时才会发生此错误。

最佳答案

改变

new double(5);

new double[5];

第一个语法在堆上创建一个 double 并将其设置为 5。第二个语法创建一个包含五个 double 的数组。

无论哪种方式,使用完后删除 dp 都是一个好习惯。在第一种情况下,正确的语法是 delete dp;,在第二种情况下,delete[] dp;

关于c++ - SIGABORT 将文件读入双指针时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13564567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com