概述
看到一段程序:
分配一块内存,使用完释放内存空间时却没有从这块内存的首地址开始去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的全部内容,希望文章能够帮你解决指针使用不当引起的系统crash所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复