std::list を含む構造が定義されています。私のコードでは、このリストを繰り返し処理しようとしていますが、奇妙な結果が得られます。
struct my_struct_t {
std::list<int> my_list;
//More fields
};
これは、ヘッダー ファイルで定義されている私の構造です。
このヘッダーを含むファイルのサンプル コードは次のようになります。
std::list<int>::iterator my_iterator;
struct my_struct_t* test_struct = (struct my_struct_t*) malloc(sizeof(struct my_struct_t));
my_iterator = test_struct->my_list.begin();
printf("Beginning of list address: %p\n", my_iterator);
my_iterator = test_struct->my_list.end();
printf("End of the list address: %p\n", my_iterator);
printf("Address of the list: %p\n", &(test_struct->my_list));
このコードは正常にコンパイルおよび実行されますが、出力は次のようになります。
Beginning of list address: (nil)
End of the list address: 0x86f010
Address of the list: 0x86f010
リストは空でなければならないので、最後の 2 行は私にとって完全に理にかなっています。しかし、どのように/なぜ最初にヌルポインターを取得するのですか? どうすればこれを修正できますか?