私は頻繁に行列を作成して作成する必要があるため(ポインターを使用する必要があります)、C ++で関数を作成してそれらにスペースを割り当て、最後の値がNULLに設定されていることを確認します。アプリケーションは、特定の場合にこのエラー(glibcが検出されました:メモリの破損)をドロップします。コードは次のとおりです。
template<typename T> T *allocate(int size) {
T *temp = new T[size];
temp[size] = (T) NULL;
return temp;
}
これは機能します:
unsigned char *tmp = allocate <unsigned char> (10);
しかし、これはエラーを落とします:
unsigned char **tmp = allocate <unsigned char *> (10);
これは、次と同等になります。
unsigned char **tmp = new unsigned char *[10];
tmp[10] = (unsigned char *) NULL;
どっちがいい。なぜこのエラーが発生するのでしょうか。
更新:回答ありがとうございます。私はとても盲目です。これは1つのバグです。しかし、クラッシュの問題はコードの別の部分からでしたが、配列の割り当てられたスペースの外にNULLを追加していたためでもありました。