gpt4 book ai didi

调用 malloc() 会覆盖静态表

转载 作者:行者123 更新时间:2023-11-30 17:41:19 26 4
gpt4 key购买 nike

我正在 STM32F4 微 Controller 内部开发 ARM Cortex M4F (M3),没有操作系统。语言是纯C语言。

我在使用 malloc() 函数时遇到问题。下面的代码使用从 SD 卡读取的全局 volatile 数据表( volatile 无符号 char[] fat_sector_buffer)。在函数中,我声明指针内存(用于从表中读取数据作为结构的结构类型),并将内存分配为第二个结构,保存来自 RTC 的日期和时间。

问题是,当我使用 malloc() 时,内存是在 fat_sector_buffer 上分配的。

代码:

unsigned char fat16_update_entry()
{
uint8_t looking=1;
unsigned int i=0;
char ret=0;
Fat16Entry *data;
DateTimeStruct *dt=malloc(sizeof(DateTimeStruct));
unsigned short time,date;
dt= read_calendar(dt); //Read calendar date and time
...

malloc 之后我得到的是: http://i.stack.imgur.com/Lv0Mn.png

为什么会发生这种情况以及如何解决?

最佳答案

这篇文章没有指出 fat_sector_buffer 指向的内存实际上是如何分配的、它有多大,或者它是如何填充的。很难说它是否真的被重写了。

malloc 实际上并不向它分配的内存写入任何内容。只需保留它并提供一个指针即可。

关于调用 malloc() 会覆盖静态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com