2016-03-15 57 views
-2

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

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

不,'* m1' =大小char' = 1 – MikeCAT

+0

的'的大小,我不认为很多类型的大小为''100! – EOF

+0

1)什么是* char? 2)不要将'malloc'和朋友的结果作为C. – Olaf

回答

0

cmdchar (*)[100],而m1char *,所以你不能直接使用sizeof m1,这给你的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);