この一連のポインターの内容にアクセスする C のコードで問題が発生しています。
私はこれらの構造体を持っています:
typedef struct {
unsigned int hash;
char string[10];
void *memory;
} thing;
typedef struct {
int num;
thing *thing;
} node;
typedef struct {
int size;
thing* things;
node* nodes;
} t_system;
Ok。今、私は次のようにすべてを初期化します:
thing* things = NULL;
things = calloc(10, sizeof(thing));
node* nodes = NULL;
nodes = calloc(10, sizeof(node));
t_system* theSystem = NULL;
theSystem = calloc(1, sizeof(t_system));
theSystem->things = things;
theSystem->nodes = nodes;
そして今、私はこれを設定したい:
theSystem->nodes[2].thing = &theSystem->things[1];
その行の後、デバッグしてブレークポイントを設定すると、システム ノードは 0x0 を指します
どこが間違っていますか?
if (theSystem->nodes[2].thing == NULL) {
theSystem->nodes[2].thing = &theSystem->things[1]; //this is executed
}
if (theSystem->nodes[2].thing == NULL) {
//this is not executed...
}
私がすることができます:
theSystem->nodes[2].thing->hash = 123;
また、デバッグでは、ハッシュとモノの正しい値が表示されますが、ノードの値は表示されません。0x0 を指します。