В настоящее время мы создаем API для определенной библиотеки. Часть интерфейса требует, чтобы библиотека получала и возвращала пользовательские классы, такие как вектор и строка.Передача std :: string в библиотеке API
При попытке имитировать использование библиотеки в простом сценарии, в режиме отладки система подавляется при доставке строки в качестве ввода.
Я считаю, что существует другое представление строкового класса в режиме отладки или выпуска. Тогда наша библиотека предполагает получить определенное представление, неправильно прочитать член данных и раздавить по пути. Итак, каков наилучший способ передачи объектов STL в API. Мишень ОС Виндоус XP скомпилирован с MSVC 8, хотя пользователь библиотеки будет использовать окна их компилятор может (и, вероятно, будет) отличаться Идеи, которые мы имели до сих пор:
- Изменение строки на символ * - Но тогда разработчики могут сбивать с толку ответственность за освобождение памяти.
- Используйте нашу собственную версию String - я не хочу разрабатывать другую частную реализацию строки.
- Отпустите версию отладки и версию отладки.
- Спросите людей о переполнении стека для какой-то опции, которую мы пропустили или не понимаем, или просто услышать от их опыта - сделано.
Вы верите, что есть другое представление или вы знаете, что есть? –
@Neil: хорошая точка. Вы знаете больше об этом? Тем не менее, даже если между выпуском и отладкой нет никакой разницы, все еще сомнительно использовать STL в API, используемом третьими лицами IMHO. – Wizard79
И если ваша библиотека получает объект, который будет содержать данные, которые должны быть доставлены. Таким образом, нет риска выпуска данных памяти. – lsalamon