Dr. Memory 不可寻址访问和可能的泄漏以及来自简单 hello world 的仍然可访问的分配

问题描述

使用 MinGW 和 gcc 的基本 hello world 程序,没有额外的标志。我很困惑为什么我会收到错误“无法寻址的访问”、“可能的泄漏”和“4134 字节的仍然可访问的分配”。

目标:x86_64-w64-mingw32 使用 gcc 8.2.0 版

#include <stdio.h>

int main() {
    printf("Hello World");
    return 0;
}

来自 Dr. Memory 的错误信息:

Error message from Dr. Memory

像这样的简单程序难道不应该完全没有错误吗?也许如果我能深入了解正在发生的事情。

解决方法

我认为,当您想在屏幕上打印某些内容时,通常需要使用 int argcargv[],特别是 char *argv[]在 ma​​in 之后的 "()" 里面,当然你的字符串是一个参数,自然。 该程序将如下所示:

#include <stdio.h>

int main(int argc,char *argv[]) {
    printf("Hello World");
    return 0;
}

请注意,现在程序接收到一个 char *argv[] 类型的参数,并且它们的数量存储在 argc 中。不可寻址的原因可能是因为无法知道要打印的已分配数组的大小。