求助:执行完回调函数之后,局部变量莫名其妙被改变了

2020-01-13 18:25发布


void SCH_Dispatch_Tasks(void)
{
    u8 Index = 0;

    for(Index = 0; Index < SCH_MAX_TASKS; Index++)
    {
        if(g_SCHTasks[Index].RunMe > 0)
        {
            (g_SCHTasks[Index].pTask)();                /** 执行改函数之前Index=0,但是执行完之后Index=1了,求解,为什么啊?????? **/

            g_SCHTasks[Index].RunMe = 0;

            if(g_SCHTasks[Index].Period == 0)
            {
                SCH_Delete_Task(Index);
            }
        }
    }
}
执行完回调函数之后,局部变量被改变了,为什么啊?该怎么查找原因啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
q457344370
1楼-- · 2020-01-14 00:00
内存写断点
wye11083
2楼-- · 2020-01-14 01:34
 精彩回答 2  元偷偷看……
t3486784401
3楼-- · 2020-01-14 06:23
F11啊,去汇编层面看看
qinxg
4楼-- · 2020-01-14 06:32
内存溢出了呗. 仔细检查下数组,指针的溢出.  用汇编代码单步运行下, 看下堆栈情况
michael.yang
5楼-- · 2020-01-14 07:53
for循环后,就算不满足循环条件,“index++”一样会执行,结果当然是1了。你C语言没过关吗?
gsq19920418
6楼-- · 2020-01-14 12:06
代碼好懶給全吧!

一周热门 更多>