为什么Visual c++和c++给我的程序不同的输出?

Why do Visual C++ and g++ give different output for my program?

本文关键字:c++ 输出 我的 Visual 为什么 程序      更新时间:2023-10-16

我写了一个c++代码,面对两个

首先,当我用两个不同的编译器(Visual c++和g++)编译以下代码时,它们为H[][]矩阵创建不同的输出。

vc++得到的结果是正确的,而g++得到的H矩阵的结果是错误的。我在cygwin中使用g++ -O -o output myfile.cpp

我逐行检查我的代码,但我找不到原因。

第二,当我为xt数组分配一个大的数字时(例如30),我的代码遇到一个错误。

全局变量,例如:

int n, m, beta;

初始化为0。然后,使用它们的值分配内存:

char *t = new char[n];
char *x = new char[m];

之后读取nm,但假设tx的大小与nm的新值相对应,可以访问它们。您很可能最终访问超出范围的内存。

这是未定义的行为。

你需要做的是将tx初始化为nullptr,并在main中为它们分配内存

char *t = nullptr;
char *x = nullptr;
int main()
{
    cout << "Enter n (size of t);" << endl;
    cin >> n;
    cout << "Enter m (size of x):" << endl;
    cin >> m;
    // Allocate memory for t and x.
    t = new char[n];
    x = new char[m];