CERT組織
地址空間佈局隨機化(Address Space Layout Randominzation):會把應用程序的數據區域隨機放置在內存中,這些數據區域包括代碼,棧和堆。
數據執行保護(Data Execution Prevention)數組
define PINT int* PINT ptr1,ptr2; ```//換成typedef int* PINT; PINT ptr1,ptr2;
if(pi == NULL){ // 不該該解引pi }else{ // 能夠使用pi }
assert(pi != NULL);
float *vector = malloc(20 * sizeof(float)); if(vector == NULL){//malloc分配內存失敗}
int buffer[20];
int num = 2147483647; int *pi = # short *ps = (short*)pi; //將一個整數指針賦值給一個短整數指針
if(getSystemStatus == 0)
//把函數的地址與0做比較,而不是調用函數後的返回值與0比較。只用函數名自己時返回的是函數的地址。int (*fptrCompute)(int,int); int add(int n1,int n2, int n3){return n1+n2+n3;} fptrCompute = add; fptrCompute(2,5); //試圖只用兩個參數調用add函數,而該函數指望的是三個參數,能編譯,但輸出不肯定。
free(name);name=NULL
int userID; char *securityQuestion; memset(name,0,sizeof(name)); userID = 0; memset(securityQuestion,0,sizeof(securityQuestion));
... memset(name,0,sizeof(name)); free(name);```