【发布时间】:2021-05-22 08:39:07
【问题描述】:
我正在尝试将指针引用(双精度)传递给函数,并且在函数内部我想为该指针分配内存并用 10s 填充它。在 x64 和 x86 的 Visual Studio 中,它不会用 10 填充内存,而是用 0 填充内存。 我不太明白我在这里做错了什么。
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
void GetData(double** d) {
*d = malloc(sizeof(double) * 100);
if (*d == NULL)
return;
memset(*d, 10, 100 * sizeof(double));
}
int main(void) {
double* data;
GetData(&data);
for (int i = 0; i < 100; i++) {
printf("%f\n", data[i]);
}
return 0;
}
【问题讨论】:
-
malloc是否获得void**参数?不,它返回一个指向已分配内存的指针。 C 函数有返回值是有原因的。使用它们。 -
memset填充字节值,不能与双精度值一起使用。