Ошибка AddressSanitizer (alloc-dealloc-mismatch, оператор new vs free) в пакете R с кодом C++ с использованием libc++ и C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка AddressSanitizer (alloc-dealloc-mismatch, оператор new vs free) в пакете R с кодом C++ с использованием libc++ и

Сообщение Anonymous »

Минимальные детали и минимальный пример
Я разрабатываю пакет R с интеграцией кода C++.
Пакет отлично работает на различных платформах и компиляторах. (например, GCC, CLANG).
Однако в CLANG-ASAN/UBSAN я получаю ошибку alloc-dealloc-mismatch, связанную с оператором new и free.
Ошибка похоже, связано с обработкой исключений и, в частности, происходит, как в следующем минимальном примере:
#include
#include
#include
#include

using namespace std;

template void ThrowIfBad(bool is_good_, const E &e_) {
if (!is_good_) {
throw e_;
}
}

string GetFileExtension(const string &fileName) {
size_t extPos = fileName.find_last_of('.');
ThrowIfBad(
extPos != string::npos,
invalid_argument("Error: No file extension found."));
string ext = fileName.substr(extPos);
std::transform(ext.begin(), ext.end(), ext.begin(),
[](unsigned char c) { return std::tolower(c); });
return ext;
}

int main() {
try {
string ext = GetFileExtension("invalidfile");
} catch (const std::invalid_argument &e) {
std::cerr

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-r-packa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»