Могу ли я освободить() что-то в C, которое было использовано malloc() в C++? ⇐ C++
-
Гость
Могу ли я освободить() что-то в C, которое было использовано malloc() в C++?
Я пишу оболочку для библиотеки, написанной на C++, чтобы ее можно было использовать из C. В коде оболочки я делаю множество копий базовых данных контейнеров C++. Например. если библиотечная функция C++ возвращает std::vector, моя оболочка вернет структуру вида {size_t len; size_t размер; void *arr;, где arr содержит копию данных из вектора. Когда пользователь закончит работу с данными, он должен освободить их.
Мой вопрос: разрешено ли всегда пользователю (C-код) вызывать free() для указателей, которые были malloc()< /code>:d в C++? Или мне нужно создать эквивалентную функцию в моем коде-оболочке?
Я пишу оболочку для библиотеки, написанной на C++, чтобы ее можно было использовать из C. В коде оболочки я делаю множество копий базовых данных контейнеров C++. Например. если библиотечная функция C++ возвращает std::vector, моя оболочка вернет структуру вида {size_t len; size_t размер; void *arr;, где arr содержит копию данных из вектора. Когда пользователь закончит работу с данными, он должен освободить их.
Мой вопрос: разрешено ли всегда пользователю (C-код) вызывать free() для указателей, которые были malloc()< /code>:d в C++? Или мне нужно создать эквивалентную функцию в моем коде-оболочке?
Мобильная версия