Я конечно понимаю что сейчас раздел не особо популярен, но всё же если человек, который разбирается в теме прочтёт сообщение попрошу его ответит!
В литературе по программированию на с++ часто пишут что нужно использовать оператор new для работы с памятью и что malloc уже давно устарел, и с классами его использовать нельзя.
Однако если смотреть исходники Дума 3 или другие современные игровые исходники то видно что они используют оператор malloc для манипулирования с памятью. Хотя при этом активно работают с классами и другими вкусностями в C++.
Отсюда вопрос, нафига они так делают и почему не юзают malloc?
[Ответ]
silly 05:36 02.03.2013
Сообщение от Hopkroft:
В литературе по программированию на с++ часто пишут что нужно использовать оператор new для работы с памятью и что malloc уже давно устарел, и с классами его использовать нельзя.
Сообщение от Hopkroft:
если смотреть исходники Дума 3
Сообщение от Hopkroft:
оператор malloc для манипулирования с памятью.
malloc - это функция, а не оператор)
Сообщение от Hopkroft:
Хотя при этом активно работают с классами и другими вкусностями в C++.
Отсюда вопрос, нафига они так делают и почему не юзают malloc?
почему юзают malloc, насколько я понимаю?)))
ответ прост. malloc выделяет память в БАЙТАХ. new выделяет память в розовых слониках.
вопрос - сколько выделит памяти в байтах следующий код:
int *n = new int[10];
ответ - от 10 до 80)))
в кроссплатформенных разработках это невероятно критично. и необходимость использовать malloc - далеко не самое большое зло.
[Ответ]
Hopkroft 13:57 02.03.2013
Сообщение от silly:
Какие например?
Признаю свой косяк с думом, невнимательно поглядел, что они свой аллокатор используют.
Spectator, описался про malloc, конечно это же это функция))
Где можно почитать по поводу best-practices программирования на С++? Или это приходит после прочтения такие корифеев как Александриеску и Майерса?
[Ответ]
Battle Coder 21:32 02.03.2013
Spectator, контрпример?
byte *n = new byte[100500] ? внимание, сколько байт выделит?
int и правда может платформозависимый... используйте long/long long/short, если вам это критично. а ещё лучше использовать java - там эту проблему решили радикально.
[Ответ]