当我使用malloc时,如何在C中获取* char的大小?

时间:2016-03-15 00:57:13

标签: c arrays char malloc size

我有

  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

时,我应该做什么来获得该值

1 个答案:

答案 0 :(得分:0)

cmdchar (*)[100],而m1char *,因此您无法使用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);