2019-07-21 08:25发布
回复【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;
是不是就不需要为他们申请内存了?
最多设置5个标签!
因为我们的malloc里面,看代码:
if(!mallco_dev.memrdy[memx])mallco_dev.init(memx);//未初始化,先执行初始化
如果没初始化,会先初始化的。
2,
因为用到了内存管理
---------------------------------
谢谢jermy_z解答:
1.代码没修改,按理说申请内存应该是内存初始化以后再申请吧,为什么一定第二个不需要呢?
2.第二个问题如果不申请内存也不会报错,extern FATFS *fs[2]; 这边都申明了,为什么一定要给它申请内存呢。我这样理解:我定义一个u8 data[100]的数组,申不申请内存都是可以吧,这个不一样吗?可能是我理解还不到位,麻烦帮解释下。
回复【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;
是不是就不需要为他们申请内存了?
2,是的。
---------------------------------
谢谢原子哥耐心解答!
一周热门 更多>