Когда мы используем malloc()
для выделения памяти, мы должны указать размер, который находится у власти двух? Или мы просто даем точный размер, который нам нужен?
Как
//char *ptr= malloc( 200 );
char *ptr= malloc( 256 );//instead of 200 we use 256
Если лучше указать размер, который находится во власти двух, в чем причина этого? Почему это лучше?
Спасибо
Edit
Причиной моей путаницы является следующая цитата из блога Джоэля Назад к основам
Смарт-программисты минимизируют потенциальное распределение malloc на всегда выделяя блоки памяти которые имеют степень 2. Вы знаете, 4 байта, 8 байтов, 16 байт, 18446744073709551616 байт и т.д. Для причины, которые должны быть интуитивно понятны любой, кто играет с Lego, это сводит к минимуму количество странных фрагментация, которая продолжается в цепь. Хотя это может показаться пространство для отходов, также легко увидеть как он никогда не тратит больше 50% космос. Таким образом, ваша программа не использует более чем в два раза больше необходимо, что не так важно сделка.
Извините, я должен был опубликовать вышеприведенную цитату ранее. Мои извинения!
Большинство ответов, до сих пор, говорят, что выделение памяти во власти двух - плохая идея, тогда в каком сценарии лучше следовать за Джоэлом о malloc()
? Почему он так сказал? Является ли приведенное выше цитируемое предложение устаревшим сейчас?
Просьба объяснить это.
Благодаря