私は次のような機能を持っています
template <class Type>
myFunc(Type** arrayToBeFilled);
私はそれをこのように呼びます:
double* array = NULL;
myFunc(&array);
そして、関数内で、strtod関数を使用して数値の読み取りと解析を行います。
//ここでファイルを開き、すべての行の行数と倍精度浮動小数点数を取得します
...
char *inputString = new char[LONG_STRING_SIZE];
char *pNext = NULL;
(*arrayToBeFilled) = new Type[length*rowSize];
for (int i=0; i<length; i++)
{
source.getline(inputString, LONG_STRING_SIZE);
pNext = NULL;
for (int j=0; j<rowSize; j++)
{
double d = strtod(inputString, &pNext);
(*arrayToBeFilled)[i*rowSize+j] = d;
inputString = pNext;
pNext = NULL;
}
}
変数dはデバッガーで確認するためのものであり、実行中は問題ありません。しかし、配列を埋めた後、私はそれを印刷しようとします(チェックのためだけに)
for (int i=0; i<length; i++)
{
for (int j=0; j<rowSize; j++)
{
cout<<(*arrayToBeFilled)[i*rowSize+j]<<" ";
}
cout<<"\n";
}
そして、ここに悪い出力があります-他の数値、時にはヒープの破損など。関数の内外で印刷していました-同じ結果です。そして、私はこの配列を削除することはできませんし、関数を削除することもできません-実行時エラーが私に続きます!