C语言基础知识整理(三)

1  C里面是不是所有的动作都是main()函数引起的?

      不是。静态变量,全局变量的分配是在main()函数之间就已经完成了,只有编译器是由main()函数开始执行。


2 内存分配的形式有哪些?

     a. 由符号起始的区块(Block Started by Symbol,BSS)段:BSS段通常用来存放程序中未初始化的全局数据和静态数据的一块内存区域。BSS段属于静态内存分配,程序结束后静态变量资源由系统自动释放。

    b.数据段:数据段通常是指用来存放程序中已经初始化的全局变量的一块内存区域。数据段也属于静态内存分配。

    c.代码段:代码段也叫文本段,通常是指用来存放程序执行代码的一块内存区域。

    d.堆:堆用于存放进程运行中被动态分配的内存段,大小不固定,可动态扩张或缩减。

    e.栈:栈用户存放程序临时创建的局部变量。


3 内存泄漏

    堆是动态分配内存的,并且可以分配很大的内存,使用不好会产生内存泄漏。频繁使用malloc和free可能会产生内存碎片。当进行内存分配时,内存格式为:(用户使用段)
(空白段) (用户使用段),当空白段很小时,可能不能提供足够多的空间,久而久之,会产生很多这样的小间隙,这些很小的间隙叫碎片。


4 define有哪些缺陷

  1)无法进行类型检查。

  2)无法单步调试

  3)会导致代码膨胀

  4)可能会产生副作用

你可能感兴趣的:(C语言)