作者:猥琐的爆米花 | 来源:互联网 | 2023-08-19 11:04
看到一段程序:分配一块内存,使用完释放内存空间时却没有从这块内存的首地址开始去free,从而导致程序挂掉了。测试案例:intmain(intargc,char*ar
看到一段程序:
分配一块内存,使用完释放内存空间时却没有从这块内存的首地址开始去free,
从而导致程序挂掉了。
测试案例:
int main(int argc, char* argv[])
{
char* ps_mem = null;
ps_mem = malloc(1024*sizeof(char));
if (ps_mem)
{
ps_mem++;
}
if (ps_mem != null)
{
free(ps_mem);
ps_mem = null;
}
return 0;
}
实际运行上面这段程序会挂掉。
正确的写法可以参考如下:
int main(int argc, char* argv[])
{
char* ps_mem = null;
char* ps_temp = null;
ps_mem = malloc(1024*sizeof(char));
ps_temp = ps_mem;
if (ps_mem)
{
ps_temp++;
}
if (ps_mem != null)
{
free(ps_mem);
ps_mem = null;
}
return 0;
}
注意:
1. 不要轻易移动指向已分配内存块的指针;
2. 这是编程的基本功。
指针使用不当引起的系统crash,布布扣,bubuko.com