exfuns_init();为什么申请内存可以在mem_init(SRAMIN);初始化内存池之前?

2019-07-21 08:25发布

为什么在FATFS试验中有两个exfuns_init();  //为FATFS相关变量申请内存  1、其中第一个exfuns_init();  是在初始化内部内存池之前,第二个是在之后,注释掉一个编译下载都没有问题(为什么注释掉第二个会没有问题呢,先申请再初始化没问题吗,不应该先初始化再申请吗?)。 2、注释掉两个编译没问题,下载显示Fatfs Error!为什么一定要为它申请内存才不会出错呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
善良的二哥
2019-07-21 17:16

回复【4楼】正点原子:
---------------------------------
谢谢原子哥的回答。第一个看明白了。

第二个说因为用到了内存管理:

1.这个在为fs[0]和fs[1]申请内存之前,只是定义了fs[0]和fs[1]是指向FATFS类型的指针(FATFS* fs[2]),32位系统中指针是占四个字节,这样的话fs[0]在内存中应该分配到了相应的地址(占四个字节),但是并未真正分配sizeof(FATFS)个内存空间给FATFS变量是吧?

2.如果我这样写:

FATFS fs[2];

FIL file;    
FIL ftemp;     
UINT br,bw; 
FILINFO fileinfo; 
DIR dir;     

u8 fatbuf;

是不是就不需要为他们申请内存了?

一周热门 更多>