zoukankan      html  css  js  c++  java
  • 段错误 “段错误(segment fault)”、“非法操作,该内存地址不能read/write” 非法指针解引用造成的错误。

    [root@test after_fc_distributed]# ./ffmpeg-linux64-v3.3.1 -i "concat:mymp3tmp/test_0.mp3|mymp3tmp/test_1.mp3|mymp3tmp/test_2.mp3" -acodec copy q_qmp3cut0.mp3
    段错误

    KeyboardInterrupt
    OpenCV Error: Assertion failed (wsz == wsz0) in writeBlock, file /io/opencv/modules/videoio/src/cap_mjpeg_encoder.cpp, line 135
    terminate called after throwing an instance of 'cv::Exception'
    what(): /io/opencv/modules/videoio/src/cap_mjpeg_encoder.cpp:135: error: (-215) wsz == wsz0 in function writeBlock

    已放弃(吐核)

    小结:

    1、

    “段错误(segment fault)”、“非法操作,该内存地址不能read/write”
    非法指针解引用造成的错误。

    《程序员的自我修养 : 链接、装载与库》

    Q

    我写的程序常常出现“段错误(segment fault)”或者“非法操作,该内存地址不能read/write”的错误信息,这是怎么回事?

    A

    这是典型的非法指针解引用造成的错误。当指针指向一个不允许读或写的内存地址,而程序却试图用指针来读或写该地址的时候,就会出现这个错误。

    在Linux或Winodws的内存布局中,有些地址是始终不能读写的,例如0地址。还有一些地址是一开始不允许读写,应用程序必须事先请求获取这些地址的读写权,或者某些地址一开始并没有映射到实际的物理内存,应用程序鼻血事先请求这些地址映射到实际的物理地址(commit),之后才能够自由地读写这片内存。

    当指针指向这些区域的时候,对它指向的内存进行读写就会引发错误。

    造成这样的最普遍的原因有两种:

    1、程序员将指针初始化为NULL,之后却没有给它一个合理的值就开始使用指针。

    2、程序员没有初始化栈上的指针,指针的值一般会是随机数,之后就直接开始使用指针。

    因此,如果你的程序出现了这样的错误,请着重检查指针的使用情况。


    referrer

    《程序员的自我修养 : 链接、装载与库》
     
     
     
     
  • 相关阅读:
    c# winform 应用编程代码总结 5
    c# winform 应用编程代码总结 6
    C语言 如何隐藏DOS窗口
    c# winform 应用编程代码总结 13
    c# winform 应用编程代码总结 8
    c# winform 应用编程代码总结 7
    c# winform 应用编程代码总结 10
    Ext grid改变行背景颜色 和改变行字体颜色
    我的博客学习记录一箩筐(每天更新)
    New version of wxDesigner based on wxWidgets pre3.0 released
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9043307.html
Copyright © 2011-2022 走看看