malloc h



Автор АФ задал вопрос в разделе Другие языки и технологии

C, malloc realloc и получил лучший ответ

Ответ от Ёыроежка[гуру]
Эти функции возвращают указатель на тип void. Указательна этот тип может быть преобразован в указатель на любой другой тип. Так что в принципе касатинг (int *) не нужен.
Тем не менее это делает более читабельным код, то есть дает представление о типе того объекта, память для которого вы распределяете.
Есть единственная техническая разница, которая использовалась на старых компиляторах. Дело в том, что эти функции объявлены в заголовочном файле <stdlib.h>. Иногда программисты забывают включить этот заголовок в свою программу. Тогда согласно стандарту С действует правило, что если нет прототипа функции, то значит по умолчанию она возвращает значение int.
Программисты пользовались этим и указывали выражение без кастинга
char *p = malloc( N );
Тогда компилятор сразу же выдавал сообщение об ошибке, так как указателю на char присваивалась величина типа int. То есть запись без кастинга позволяла выявить тот случай, когда программист забывал вставить соответствующий заголовочный файл <stdlib.h>
Когда же пишется как
char *p = ( char * ) malloc( N );
то компилятор пропускал этот код, даже если требуемый заголовок опущен, то есть он считал, что вы преобразуете int в (char * ).
Но сейчас без этого технического приема компиляторы сообщают, когда вы используете функцию без прототипа, то есть когда вы зхабыли включить нужный заголовок.
Так что лучше для читабельности программы перед malloc вставить кастинг.
Ведь трудно поянть из выражени
p = malloc( sizeof( *p ) );
для объекта какого типа вы выделяете память.
P.S. Не забудьте мне поставить 10 баллов за лучший ответ!:)

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C, malloc realloc
спросили в Stdlib h
что значит
Начинающему программисту стоит научится пользоваться поиском:

= #include
подробнее...
спросили в Stdlib h String h
C++, заголовк cstdlib и файл *.obj
В Visual C++ 2010 достаточно подключить #include <iostream> и уже будут подключены Внешние
подробнее...

Сколько серий в аниме Наруто
220 - 1ый сезон, 49 - 2ой (Наруто Шипунден) , где то 4 фильма
посмотри тут (тока введи
подробнее...

ausbildung
Ну это не совсем так, "что иностранцам его делать нельзя". Знаете какие иностранцы "умудряются"
подробнее...
спросили в Другое Беэр Шева
Далеко ли Эйлат от Тель-Авив?
На этом сайте вы можете многое узнать об Эйлате и других городах Израиля.
h ttp://
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Адвокаты
Помогите найти пример готовой защитной речи адвоката по любому делу?
Работа адвоката это целый процесс. И даже если не говорить об обдумывании и оценке дела, то и в
подробнее...
спросили в Философия Знания
какие уровни социологического знания выделяют??
уровни социологического знания | Социологияsocnauka.ru/?p=589Сохраненная копия - Похожие
Вы
подробнее...

PROTON, чо за машина?
Протон - это сокращение для Perusahaan Otomobil Nasional, переводит „ Национальный автомобильный
подробнее...
спросили в Музыка Ареццо
как переводится на английский: до ре ми фа соль ля си до, в общем ноты
Изобретатель современной системы нотной записи – бенедиктинский монах Гвидо Аретинский (Гвидо
подробнее...

кто это?
Мэтт Лантер (англ. Matt Lanter, родился 1 апреля 1983 года; Массиллон, Огайо, США) - американский
подробнее...

помогите сделать задачу
Первая задача х-скорость самолета
10х+6х=10240,
16х=10240
х=640 км/ч
в первый день
подробнее...
Динамическое распределение памяти на Википедии
Посмотрите статью на википедии про Динамическое распределение памяти
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*