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);```