关于 static 变量求助
时间:10-02
整理:3721RD
点击:
- void send_header(Xuint32 start_addr,Xuint8 flag)
- {
- static Xuint32 addr;
- Xuint32 temp;
- Xuint8 tmp1[4];
- Xuint8 last_byte=0;
- Xuint32 i=0;
- Xuint8 j=0;
- //Xuint8 addr_tem;
- static Xuint8 k=0;
- //static Xunit8 k=0;
- Xuint8 jump_flag=0;
- Xuint32 temp_d; //
- if(flag!=0)//send file header
- {
- addr = start_addr;
- k=0;
- }
- }
既然你自己怀疑是静态变量问题,就不用静态变量。因为引用静态变量的函数是不可重入的。也就是说,两个任务同时调用这个函数,或在中断服务程序调用这个函数都不安全。也许你程序的其他地方有问题,例如,flag的值被错误的指针变量赋值损坏了,任务堆栈太小了等等...。
声明一下,我不懂xps。
程序的另外一个地方用到memset函数,注释掉这个函数就ok了,看来是memset对存放静态变量内存做了什么操作,但我不理解的是memset是对特定区域进行操作怎么会影响到其他地方。
通常,静态变量只不过是只能在特定函数才能访问的全局变量。你那个memset也许访问了一个全局变量或静态变量,所以很容易误写了其他的全局变量或静态变量。多任务(多线程)编程应该尽量少用静态变量。
