void*之阴沟里翻船

来源:互联网 发布:caffe softmax 编辑:程序博客网 时间:2024/06/06 08:54

最近在做嵌入式开发,使用的是FreeRTOS系统,使用uxTaskGetStackHighWaterMark获取task剩余栈空间时遇到了问题。

其中一个task获取剩余栈空间时总是返回0. 尝试增加任务堆栈大小没有任何效果。

最终发现竟然是uxTaskGetStackHighWaterMark传入的task handle有问题。

在获取handle时竟然是handle1 = &handle(此处为一段遗留代码,以前的代码并没有使用过handle1所以也没出过问题)

在FreeRTOS中typedef void * xTaskHandle,而void*类型是可以指向任何类型的,包括void**,所以当然也不会报错

所以使用if(NULL!=handle1)根本无法判断handle1有效性。


本人嵌入式开发经验很少,被这个bug也是折腾的够呛,足足找了接近一小时。

0 0
原创粉丝点击