《嵌入式系统构件》中的一个BUG

来源:互联网 发布:大疆dji软件下载 编辑:程序博客网 时间:2024/04/29 08:49

《嵌入式系统构件》一书中,附有各模块的驱动代码。在这些代码中,有一个普遍存在的会导致内存溢出的Bug。

即在使用到OSTaskCreateExt()函数或者OSTaskCreate()函数时的第三个参数使用错误,

比如在键盘章节,P100页中有:

static OS_STK KeyScanTaskStk[KEY_SCAN_TASK_STK_SIZE];

在创建任务时,P104页中有:

OSTaskCreate(KeyScanTask,(void *)0,&KeyScanTaskStk[KEY_SCAN_TASK_STK_SIZE],KEY_SCAN_TASK_PRIO);

 

其中“&KeyScanTaskStk[KEY_SCAN_TASK_STK_SIZE]正确的用法应该是“&KeyScanTaskStk[KEY_SCAN_TASK_STK_SIZE - 1]”

 

原书中的写法会导致内存越界。这种错误在本书中多次出现。

 

而在作者的另外一本书中《MicroC/OS-II The Real-Time Kernel》中的用法是正确的。

也许是书中的源代码也被译者低劣的翻译质量感染了

 

 

原创粉丝点击