我正在尝试使用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。有什么见解吗?
这是因为调试器不知道数组的实际长度。从调试器的角度来看,arraystuffs
只是一个指针。这就是为什么它只显示一个元素。
您显示的代码中没有任何错误,因此,如果您的程序没有按预期运行,那么问题就出在其他地方。
根据我的经验,当您要求内存空间时,将要存储的内容的大小乘以您将拥有的项目数量总是很有用的。例如,如果你想要一个int数组,我会这样做:
int*my_ints;my_ints=(int*)malloc(20*sizeof(int));
就你而言arraystuffs=(uint8_t*)malloc(update_size*sizeof(uint8kt));