close

sprintf和snprintf都是以\0結尾,在轉換字串時要注意,遇到0就會被視為結束,造成轉換不完全。

宣告型態時,用C的標準定義,compiler比較精確,若用自定型態,如
typedef U8 unsigned char
compiler時可能只會出現warming,而不是error
-------------------------------------------------

Overflow:
用錯型態很容易發生overflow。
ex1
把char a = 0x3345,把 16 bits放到 8 bits。

ex2
傳錯的參數。
int test(char *a);

unsigned char *b;
test(b);

當發現mark掉几行覺得不會影響的程式碼,程式就正常運做,改回來又不正常,可能裡面就有overflow。


void fun1(void)

{

    int b[3];

    fun2(b);

}

 

void fun2(int *a)

{

   a[0] = 1;

   a[1] = 1;

   a[2] = 1;

   a[3] = 1; // 陳列a大小只有3,a[3] assign 的記憶體位址可能是別的變數在使用的。

}


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 lver76 的頭像
    lver76

    Iver's Blog

    lver76 發表在 痞客邦 留言(0) 人氣()