如何从静态数组复制到动态分配的内存

How to copy from static array to dynamically allocated memory

为什么 b 不成立 1., 2.

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

#define LEN 2

void main() {
    double a[LEN] = {1, 2};
    double* b = malloc(LEN * sizeof(*b));

    memcpy(b, a, LEN);
    for (size_t i = 0; i < LEN; i++)
    {
        printf("%.2f ", b[i]);
    }
    printf("\n");
}

相反,我得到

> gcc code.c                                                                                                                                                         
> ./a.out                                                                                                                                                                                   
0.00 0.00 

您在 memcpy

中忘记了 sizeof
memcpy(b, a, LEN * sizeof *b);

正如@tsanisl 在评论中指出的那样,LEN * sizeof *bsizeof a 相同,因此您可以做到:

double* b = malloc(sizeof a);
memcpy(b, a, sizeof a);

另请注意,void main() 不是 main 的有效签名。应该是 int main().