Я читаю в книге, что функция malloc в C принимает количество «фрагментов» памяти, которые вы хотите выделить в качестве параметра, и определяет, сколько байтов эти фрагменты основаны на том, на что вы приводите значение, возвращаемое malloc. Например, в моей системе int составляет 4 байта:
int *pointer;
pointer = (int *)malloc(10);
Выделил бы 40 байтов, потому что компилятор знает, что целые числа равны 4 байтам.
Это меня смущает по двум причинам:
Я читал, и параметр размера на самом деле представляет собой количество байтов, которое вы хотите выделить, и не связано с размерами каких-либо типов.
Malloc - это функция, возвращающая адрес. Как он регулирует размер выделенной памяти на основе внешнего приведения адреса, возвращаемого из void к другому типу? Я должен принять какое-то волшебство компилятора?
Я чувствую, что книга неправильная. Любая помощь или разъяснение приветствуются!
Вот что сказано в книге:
char *string;
string = (char *)malloc(80);
80 выделяет 80 блоков памяти. Размер блока задается преобразованием типа (char *), что означает, что malloc () находит хранилище для 80 символов текста.
sizeof(char); приведение не может повлиять на поведение вызова. - person Jonathan Leffler   schedule 06.04.2013