Минимальные детали и минимальный пример
Я разрабатываю пакет 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
Ошибка AddressSanitizer (alloc-dealloc-mismatch, оператор new vs free) в пакете R с кодом C++ с использованием libc++ и ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
AddressSanitizer: alloc-dealloc-mismatch (оператор новый или свободный) в исключении
Anonymous » » в форуме C++ - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Будет ли Files.mismatch() работать без проблем с любым файлом вообще? Джава
Anonymous » » в форуме JAVA - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-