• 一些c语言的疑问


    1、malloc完为什么一定要free?

    A-通过malloc得到的内存有两种方式可以得到释放:程序结束,free释放。如果一个程序不停的malloc而不释放,会出现什么问题?你可以试试,你的狗狗很快就会汪汪叫的~~~可以用下面的程序试。。。这就是所谓的内存泄露,杀人于无形。当然,如果不是在无限的循环当中,你的程序马上就会终结的话,比如在cgi里,没什么好担心的----至少linux里可以这样,具体看操作系统内存管理机制。

    #include        <stdio.h>
    #include        
    <stdlib.h>
    #include        
    <string.h>

    int
    main()
    {
            
    char* p;
            
    while(1)
            {
                    p 
    = (char*)malloc(7);
                    strcpy(p,
    "hello");
            }
    }

    2、指针为什么要初始化?

    A-即使你用了一个没初始化的指针,编译器也不会给你任何提示;你也不知道一个没有初始化的指针会做什么蠢事。有用户空间隔离的操作系统编程还好一点,程序崩溃了,操作系统还好的,你可以慢慢找错误;要是没用户空间隔离的嵌入式编程,那就废了。当然,别指望别人的程序里能处理这种意外,你没法确定别人怎么做的。

    #include        <stdio.h>
    #include        
    <stdlib.h>

    int
    main()
    {
            
    char* p;
            free(p);
    }

     注意:将指针初始化为NULL后,也就是指针指向了地址0x0000,如果试图对这个地址里的内容进行操作(dereference a NULL pointer),也将判定为段错误(segmentation fault)。

    ——————
    无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的。
  • 相关阅读:
    蓝桥杯如何训练?(附VIP题库)
    scratch2.0的教材视频,王木头系列
    out文件 dev c++
    MongoDB 学习笔记
    golang 学习笔记 -- struct interface的使用
    goang学习笔记---struct
    golang 学习笔记 ---JSON
    golang学习笔记 ---rand
    golang学习笔记 --go test
    golang学习笔记---string && strconv
  • 原文地址:https://www.cnblogs.com/pied/p/1766602.html
Copyright © 2020-2023  润新知