以下のコードは、セグメンテーション違反を生成していますが、その理由を理解できません。以下のコードでは、ベクトルを使用して複数の大きな構造体を格納していますが、コードは実行されず、セグメンテーション違反が生成されます。なぜか分からない。私の理解は、ベクトルのサイズ変更はヒープでメモリを割り当てるので、スタックのオーバーフローの問題ではないはずです。私のシステムは非常に大きな物理メモリ(256 GB)を持っており、コードは64ビットモードでコンパイルされるので、わずか40 MBの割り当ては問題ではありません。何か案は? 大きな構造のベクトルのサイズを変更する際のセグメンテーションエラー
が#include <vector>
using namespace std;
typedef struct _tmp_t {
int a_data[10*1000*1000];/* large array */
} tmp_t;
int main(void) {
vector<tmp_t> v_tmp;
v_tmp.resize(1);
return 0;
}
これはコードのすべてです'resize'は潜在的に現在の' capacity'の2倍のメモリを必要とする可能性がありますが、この特定の場合には問題にはなりません。 segfaultはどこを指していますか? –
C++では、少なくとも15年間、構造体をtypedefする必要はありません。 –