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つ以上のdoubleがある場合にのみ発生します。

4

1 に答える 1

3

変化する

new double(5);

new double[5];

最初の構文は、ヒープ上に1つのdoubleを作成し、それを5に設定します。2番目の構文は、5つのdoubleの配列を作成します。

いずれにせよ、使い終わったら削除dpすることをお勧めします。前者の場合、正しい構文はdelete dp;であり、後者の場合、正しい構文はdelete[] dp;です。

于 2012-11-26T12:10:45.263 に答える