C专家编程(3)

段(P117-119)

在一个可执行文件中,主要有三个段:文本段、数据段和bss段。利用size命令,可以查看这三个段的大小。

编程挑战

size text data bss total
1 16696 1566 600 8 2174
2 16720 1566 600 4032 6198
3 20736 1566 4616 8 6190
4.1 20784 1755 4624 8 6387
4.2 20832 1876 4632 8 6516
5 23440 1876 4632 8 6516

分析结果可知:

  • 数据段保存在目标文件中。(比较2和3的结果可得)
  • BSS段不保存在目标文件中。(比较1和2的结果可得)
  • a.out文件的大小受调试状态下编译的影响,但段不受影响。
    • 文本段易受优化措施影响。

段错误(P159-163)

可能导致段错误的常见编程错误是:

  1. 坏指针值错误:在指针赋值前就用它来引用内存/向库函数传递一个坏指针/释放指针后再访问它的内容。
  2. 改写(overwrite)错误:越过数组边界/在动态分配的内存两端写入数据/改写一些堆管理数据结构。
  3. 指针释放引起的错误:释放同一个内存块两次/释放未曾使用malloc分配的内存/释放仍在使用的内存/释放无效指针。
原文地址:https://www.cnblogs.com/maxiaowei0216/p/14247500.html