2

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 个或更多双打时才会发生此错误。

4

1 回答 1

3

改变

new double(5);

new double[5];

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

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

于 2012-11-26T12:10:45.263 回答