今天调个程序,在free时失去响应,代码大致如下
int i = 10;
char* p_buffer = (char*)malloc(4);
sprintf(p_buffer,"%04x",i);
free(p_buffer);
几番检查后查阅了sprint的手册才发现,sprint自动在末尾添加‘\0’的结束符。导致p_buffer访问越界。
很多str类的填充函数或格式化函数都有这样的特性。
今天调个程序,在free时失去响应,代码大致如下
int i = 10;
char* p_buffer = (char*)malloc(4);
sprintf(p_buffer,"%04x",i);
free(p_buffer);
几番检查后查阅了sprint的手册才发现,sprint自动在末尾添加‘\0’的结束符。导致p_buffer访问越界。
很多str类的填充函数或格式化函数都有这样的特性。