我在 VScode c++ 中编写了以下代码
当我输入 n 的大整数(例如 1000000000000000)时,我想要输出:
"Dynamic memory allocation failed.\nProgram will terminate."
如果我使用 g++ 编译器在 VScode 中运行代码,则永远不会显示输出。
但是,当我在 Programiz 这样的在线编译器中运行它时,它会显示出来。
程序如下:
#include <iostream>
#include <new>
int main(){
long int n;
std::cout << "give n : ";
std::cin >> n;
int* a= new (std::nothrow) int[n];
if (!a) {
std::cout << "Dynamic memory allocation failed.\nProgram will terminate.";
return -1;
}
return 0;
}
在 VScode 中,
#include <new>
不显示任何红色下划线,
所以我认为这意味着头文件存在并且确实包含在程序中。
那么问题出在哪里?
正如我所说,在在线编译器中,当我输入 1000000000000000 作为整数 n 的值时,输出就是所需的:
give n : 1000000000000000
Dynamic memory allocation failed.
Program will terminate.
=== Code Exited With Errors ===
但是在 VScode 中输出是:
if ($?) { g++ test.cpp -o test } ; if ($?) { .\test }
give n : 1000000000000000
terminate called after throwing an instance of 'std::bad_array_new_length'
what(): std::bad_array_new_length
我可以做什么来解决这个问题?
编辑:
我使用 mingw-w64 的 GCC C++ 编译器 (g++) 和 GDB 调试器。
几天前,我下载了 VScode 版本 1.92,并按照其网站 https://code.visualstudio.com/docs/cpp/config-mingw 中的说明进行操作。