我有
char cmd[100];
char * m1=(char *) malloc(100);
int i = sizeof(cmd) ;
int j = sizeof(m1) ;
int k = sizeof(*m1) ;
printf("size 1 : %d\n",i);
printf("size 2 : %d\n",j);
printf("size 3 : %d\n",k);
并给予
size 1 : 100
size 2 : 4
size 3 : 1
我需要知道* m1的大小是100!它返回1和4.当我使用malloc
时,我应该做什么来获得该值答案 0 :(得分:0)
cmd
为char (*)[100]
,而m1
为char *
,因此您无法使用m1
直接获取sizeof m1
的已分配内存大小,它为您提供sizeof (char *)
。
执行此操作的唯一方法是创建一个结构,并在调用malloc()
时将大小存储在字段中。
一些无关紧要的变化:
char cmd[100];
char *m1 = malloc(100); // Don't cast
size_t i = sizeof cmd;
size_t j = sizeof m1; // sizeof operators yield size_t
size_t k = sizeof *m1; // Parentheses are unnecessary
printf("size 1 : %zu\n", i); // %zu to print size_t
printf("size 2 : %zu\n", j);
printf("size 3 : %zu\n", k);