2016-03-15 50 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);