Я думаю, что у меня есть хорошее понимание того, как обращаться с памятью на С++, но делать это на C отличается. Я немного отключаюсь.
В С++ у меня есть конструкторы и деструкторы, у меня есть довольно простое новое и удаление, и я знаю, как его инкапсулировать с помощью RAII, используя интеллектуальные указатели и внутри классов.
Однако в C я не могу обрабатывать malloc и освобождать то же самое. Я не знаю, как скрыть их и как автоматизировать вещи. Все, что я могу понять, это использовать функции для инициирования и уничтожения моих указателей. Но как мне структурировать обработку моей памяти?
При написании этого я понял, что это больше вопрос о том, как я понимаю поток С, чем что-либо еще, но один вопрос за раз.
Edit: Спасибо за ответы, но мне нужно перефразировать себя.
Когда я говорю, что я использую RAII и интеллектуальные указатели для С++, я не хочу того же для C, я знаю, что это не то же самое. Но то, как я обрабатываю выделение памяти в С++, связано с этими методами.
Например, в моих классах я динамически добавляю и уничтожаю память, которую использует мой класс. Таким образом, я могу добиться своего рода инкапсуляции, мне не нужно знать, когда/как/почему класс обрабатывает эту память, это просто так. Это означает, что я могу "спрятать" нижнюю память и просто сосредоточиться на нескольких "больших" классах.
Что я хочу знать, это то, что лучше всего подходит для обработки памяти в C? Для меня нет классов с конструкторами/деструкторами. Хорошо ли выделять память в начале функции или использовать функцию, которая создает ее для меня? И как мне их снова освободить?
Это широкие вопросы, и они отличаются от ситуации к ситуации, но как вы предпочитаете ее обрабатывать? Какие советы и уроки вы можете дать?