c free时程序失去响应或崩溃

来源:互联网 发布:淘宝不能发布游戏账号 编辑:程序博客网 时间:2024/05/19 12:16

    今天调个程序,在free时失去响应,代码大致如下

int i = 10;

    char* p_buffer = (char*)malloc(4);

sprintf(p_buffer,"%04x",i);

free(p_buffer);


几番检查后查阅了sprint的手册才发现,sprint自动在末尾添加‘\0’的结束符。导致p_buffer访问越界。

很多str类的填充函数或格式化函数都有这样的特性。

原创粉丝点击