Return to Video

02-39 内存溢出

  • 0:00 - 0:05
    毋庸置疑,C/C++的这种做法打开一扇门,
  • 0:05 - 0:08
    形成了很多很多种系统崩溃的方式。
  • 0:08 - 0:15
    你可能听说过内存溢出,利用C/C++里的这个缺陷,
  • 0:15 - 0:20
    人们可以在数组范围之外进行读写,
  • 0:20 - 0:25
    恶意代码就是这样来获取内存位置的。
  • 0:25 - 0:29
    于是,这个就给各种黑客行为大开方便之门了。
  • 0:29 - 0:31
    那如何发现此类错误呢?
  • 0:31 - 0:34
    我们需要一个系统不变量来持续地
  • 0:34 - 0:38
    检查数组读写时的边界。
  • 0:38 - 0:45
    这里需要工具,来持续监控未初始化区域
  • 0:45 - 0:49
    的读写,监控每条指令语句的执行,
  • 0:49 - 0:55
    当程序试图访问一些未开辟的系统内存时,
  • 0:55 - 1:01
    不变量检查器就要抛出一个异常,或中止程序,
  • 1:01 - 1:05
    就能让我们检查到这类错误了。
  • 1:05 - 1:10
    C/C++的工具可以帮助你--包括像electric fence这些工具,
  • 1:10 - 1:17
    这种工具,将一些代码块放置在每个内存开辟的代码块前面,
  • 1:17 - 1:22
    检测是否有读取这些空间以外内存的操作。
  • 1:22 - 1:28
    其次重要的工具是Valgrind,它就是在x86平台下的一个解释器,
  • 1:28 - 1:32
    也允许我们来监控C/C++程序中的未初始化代码的访问情况。
タイトル:
02-39 内存溢出
Video Language:
English
Team:
Udacity
プロジェクト:
CS259 - Software Debugging
Duration:
01:37
秀隆 杨 added a translation

Chinese, Simplified subtitles

改訂