Malloc返回单元素数组

时间:2013-07-25 20:31:16

标签: c malloc stm32

我正在尝试使用malloc来动态分配数组。在我使用它之后,我最终得到一个元素的数组。代码如下:

uint8_t *arraystuffs;
uint16_t update_size;
//at somepoint, update_size get set to 2448

arraystuffs = (uint8_t *) malloc(update_size);

然后我尝试将数据分配给我认为应该具有的数组。当我查看调试器时,我只有一个1元素数组,其值为0x58。 我之前已经多次使用过malloc,就像上面一样,突然它不起作用。 我在网上仔细检查了几个关于malloc应该如何工作的例子,我相信我已经设置好了。

我尝试使用较小的update_size值,如50,但这还没有解决问题。

我尝试过取消类型转换,但这也无济于事。

我正在使用Keil IDE中的stm32F4 MCU。有什么见解吗?

2 个答案:

答案 0 :(得分:3)

这是因为调试器不知道数组的实际长度。从调试器的角度来看,arraystuffs只是一个指针。这就是为什么它只显示一个元素。

您展示的代码没有任何问题,因此如果您的程序没有按预期运行,则问题出在其他地方。

答案 1 :(得分:-1)

根据我的经验总是有用的,当你要求存储空间时,要将你要存储的内容的大小乘以你将拥有的项目数量。 例如,如果你想要一个int数组,我会这样做:

int * my_ints; my_ints =(int *)malloc(20 * sizeof(int));

在你的情况下 arraystuffs =(uint8_t *)malloc(update_size * sizeof(uint8_t));