creating/sizing C 中的动态数组(指针)出现问题

Trouble with creating/sizing a dynamic array (pointer) in C

它的作用应该很明显,但是我的 userLetters 数组大小不正确...这是怎么回事??我想得到数组的大小,你将元素的大小乘以你想要的数量?

我需要 userLetters 数组的长度与用户字符串的长度相同。

注意:user 是设置为 getenv(USER) 的全局变量

// Get an integer array representing the userid string in values
fprintf(stdout, "user has length %d\n", strlen(user));
int * userLetters = (int*)malloc(sizeof(int) * strlen(user));
fprintf(stdout, "Created userLetters from username %s\n", user);
fprintf(stdout, "userLetters has length %d\n", sizeof(userLetters)/sizeof(int));

这是输出:

user has length 6
Created userLetters from username abcdef
userLetters has length 2
sizeof(userLetters)

给你 sizeof(pointer) 而不是 sizeof(array)

你在进行动态内存分配时

int *p = malloc(sizeof(int) * n); 

所以n是数组中的元素个数。