Я довольно долго размышлял о том, как управлять памятью в моем следующем проекте. Который пишет DSL на C / C ++.
Это можно сделать любым из трех способов.
- Ссылка считается C или C ++.
- Мусор собрал C.
- В C ++ копирование классов и структур из стека в стек и управление строками отдельно с помощью некоторого GC.
Сообщество, вероятно, уже имеет большой опыт по каждому из этих методов. Какой из них будет быстрее? Каковы плюсы и минусы для каждого?
Смежный побочный вопрос. Будет ли malloc / free медленнее, чем выделять большой кусок в начале программы и запускать поверх него собственный менеджер памяти? .NET, кажется, делает это. Но меня смущает, почему мы не можем рассчитывать на то, что ОС сделает эту работу лучше и быстрее, чем мы можем сделать сами.