Я использую Clang версии 10.0.0 на Windows 10.
Эта программа
#include <iostream>
// without this operator the program works just fine
void* operator new(std::size_t nrOfBytes) {
std::cout << "allocate " << nrOfBytes << " bytes on heap" << std::endl;
void* p = malloc(nrOfBytes);
if (p) {
return p;
} else {
throw std::bad_alloc{};
}
}
int main() {
printf("START\n");
return 0;
}
вылетает с кодом возврата -1073741819 после компиляции с
clang ++ Main. cpp -std = c ++ 17
Конечно, тот же самый вызов Clang создает безошибочную программу, когда нет перегруженного нового оператора.
Есть намеки?