2016-03-15 2 views
-2

У меня естьКак получить размер * char в C, когда я использую malloc?

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. Что я должен сделать, чтобы иметь это значение, когда я использую таНос

+1

Нет, размер '* m1' = размер' char' = 1 – MikeCAT

+0

Я не думаю, что многие типы имеют размер '100'!. – EOF

+0

1) Что такое '* char'? 2) Не бросайте результат 'malloc' & friends в C. – Olaf

ответ

0

cmd является char (*)[100], в то время как m1 является char *, так что вы не можете непосредственно получить выделенный объем памяти m1 с помощью sizeof m1, который дает вам sizeof (char *).

Единственный способ сделать это, который приходит ко мне, - создать структуру и сохранить размер в поле при вызове malloc().

Некоторые irrelevent изменения:

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); 
Смежные вопросы