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 的記憶體位址可能是別的變數在使用的。
}
全站熱搜