なぜこのようになっているのか理解できません:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char b;
int a;
} A;
typedef struct
{
char b;
} B;
int main() {
A object;
printf("sizeof char is: %d\n",sizeof(char));
printf("sizeof int is: %d\n",sizeof(int));
printf("==> the sizeof both are: %d\n",sizeof(int)+sizeof(char));
printf("and yet the sizeof struct A is: %d\n",sizeof(object));
printf("why?\n");
B secondObject;
printf("pay attention that the sizeof struct B is: %d which is equal to the "
"sizeof char\n",sizeof(secondObject));
return 0;
}
コードで質問を説明したと思いますが、これ以上説明する必要はありません。さらに、別の質問があります: ヒープ/静的ヒープ/スタックに割り当てがあることは知っていますが、割り当て場所が不明であることはどういう意味ですか?
私はこの例について話している:
typedef struct
{
char *_name;
int _id;
} Entry;
int main()
{
Entry ** vec = (Entry**) malloc(sizeof(Entry*)*2);
vec[0] = (Entry *) malloc(sizeof (Entry));
vec[0]->_name = (char*)malloc(6);
strcpy (vec[0]->_name, "name");
vec[0]->_id = 0;
return 0;
}
私はそれを知っています:vecはスタックにあります。*vec はヒープ上にあります。*vec[0] はヒープ上にあります。vec[0]->id はヒープ上にあります。
しかし : vec[0]->_name が不明なのはなぜですか?