在C中创建/调整动态数组(指针)的大小时出现问题



这样做应该很明显,但我的userLetters数组大小不正确。。。发生了什么事??我想得到数组的大小,你把元素的大小乘以你想要的数量?

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

注意:user是一个全局变量,设置为getenv(user)

// Get an integer array representing the userid string in values
fprintf(stdout, "user has length %dn", strlen(user));
int * userLetters = (int*)malloc(sizeof(int) * strlen(user));
fprintf(stdout, "Created userLetters from username %sn", user);
fprintf(stdout, "userLetters has length %dn", 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); 

因此CCD_ 3是阵列中的元素的数量。