在 C 中使用 MPI 实现的 SampleSort,代码中的未初始化警告

SampleSort with MPI implementation in C, uninitialized warnings in code

我有这段代码(它是 C 中带有 MPI 的样本排序算法),我试图理解它,但由于对 C 了解不多,我被卡住了,我单独搜索了每个部分,但有点困惑。 我的理解是,malloc 显示堆(=内存?)中的保存位置,我们将用户给定的数字乘以 4 字节的 sizeofint,所以现在我们有正确的内存分配,我想我们可以转换它吗?虽然在上面的代码行 NoofElements也被初始化为int(atoi不是把argv1的字符串变成了用户第一行输入的吗?)那为什么还要再cast一下呢?:

NoofElements = atoi(argv[1]);

Input = (int*)malloc(NoofElements * sizeof(int));

Input 和 NoofElemnts 都在代码之后使用,但它显示了它们未初始化的警告。 还有一些我不太了解的。

The link to the full code

我的警告:

在 VS 中,如果您的文件具有默认的 .cpp 文件扩展名,代码将被视为 C++。如果它是 .c 扩展名,那么该文件可以解释为 C 代码,但需要注意的是,他们很久以前就停止尝试跟上 C 标准,转而支持 C++ 开发。但我只是确认,如果它是一个 C 文件,VS 2019 环境将不需要像 C++ 中那样进行强制转换。

在 C 中,不需要转换 malloc 的 return 值。 It's also a bad idea.


回答您的问题:

NoofElements = atoi(argv[1]); // argv[1] can be NULL.

仅仅因为程序需要命令行参数,并不意味着用户总是会提供参数。