【发布时间】:2019-12-03 05:36:56
【问题描述】:
在 main 函数中,我使用 malloc() 创建一个 unsigned char 数组:
int main()
{
int length = 64;
unsigned char *array = (unsigned char *)malloc(length * sizeof(unsigned char));
...
change_size(array, length);
}
在.h中定义的change_size():
void change_size(unsigned char* arr, int len);
在change_size函数中,我会使用realloc()来增加数组大小:
void change size(unsigned char* arr, int len)
{
printf("%d\n", len);
len = len + 16;
printf("%d\n", len);
arr = (unsigned char *)realloc(arr, len * sizeof(unsigned char));
int new_len = sizeof(arr)/sizeof(arr[0]);
printf("%d\n", new_len);
}
printf() 告诉我:
64
80
8
main() 中的数组大小也需要更新。
那么如何正确改变这个数组大小呢?
【问题讨论】:
-
请注意,
realloc可以返回NULL,但如果失败,则原始指针保持不变。 -
什么是
ciphertext,它是如何创建的? -
@ToninGuy3n:我将密文更改为 arr,错字
-
sizeof(arr)/sizeof(arr[0]);只是计算 actual 数组元素数量的有效方法。由于arr是指针,而不是数组,所以sizeof(arr)是指针的大小。 -
顺便说一下,这感觉更像是 C 代码而不是 C++ 代码,但我可能有点挑剔。