首页 > 其他 > 详细

指针使用不当引起的系统crash

时间:2014-03-03 16:32:36      阅读:418      评论:0      收藏:0      [点我收藏+]

看到一段程序:
分配一块内存,使用完释放内存空间时却没有从这块内存的首地址开始去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

指针使用不当引起的系统crash

原文:http://blog.csdn.net/boyxulin1986/article/details/20289505

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!