ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

セグメンテーション違反

索引 セグメンテーション違反

メンテーション違反(英語:segmentation fault)はソフトウェアの実行時に起きる特定のエラー条件である。segfault(セグフォールト)と略される場合がある。 セグメンテーション違反はアクセスが許可されていないメモリ上の位置、もしくは許可されていない方法(例えばリードオンリーの位置へ書き込みをしようとする、もしくはオペレーティングシステムの部分を上書きしようとする)でメモリ上の位置にアクセスしようとするときに起こる。MC68000のようなプロセッサに基づくシステムはこれらのイベントをアドレスエラーもしくはバスエラーとして参照しようとする傾向にある。 セグメント方式はメモリ管理とオペレーティングシステムを保護する方法の一つである。大部分の用途のためにページング方式に置き換えられつつあるが、セグメンテーションの専門用語はまだ多く使用されている。セグメンテーション違反はその一例である。オペレーティングシステムの中にはメインメモリ管理の方針としてページング方法が使用されているがいくつかの論理レベルでまだセグメンテーションを持つものがある。 UNIXライクのオペレーティングシステム上では、不正なメモリにアクセスをするプロセスはSIGSEGVシグナルを受け取る。Microsoft Windows上では、不正なメモリにアクセスするプロセスはSTATUS_ACCESS_VIOLATION例外を受け取る。.

26 関係: 参照 (情報工学)定数実行ファイル例外処理ページング方式バッファオーバーランバスエラーメモリ保護メモリ管理ランタイムライブラリオペレーティングシステムコンパイラコアダンプシグナル (Unix)セグメント方式ソフトウェアC言語米国国家規格協会英語GNUデバッガLinuxMC68000Microsoft WindowsNullUNIX文字列

参照 (情報工学)

参照(さんしょう、reference、リファレンス)は、他の場所にあるデータを指している情報を含む小さなオブジェクトであり、それ自身の中に(指している)データ自体を含まない。参照の指す値を取り出すことをデリファレンス (dereference)と呼ぶ(間接参照も参照)。参照は様々なデータ構造を構成する基本要素であり、プログラム内の各部で情報をやり取りするための基本でもある。 なお、C++には、参照型というものがあるが、以下で説明するのはC++のそれではなく、一般概念である。C++の参照については、ポインタ (プログラミング)#参照を参照のこと。.

新しい!!: セグメンテーション違反と参照 (情報工学) · 続きを見る »

定数

数学における定数(ていすう、じょうすう、constant; 常数)あるいは定項 (constant term) は、二つの異なる意味を示し得る。そのひとつは固定 (fix) され、矛盾なく定義された数(またはもっとほかの数学的対象)であり、この意味で言う定数であることをはっきりさせるために「数学定数」(あるいは「物理定数」もそうだが)という語を用いることもある。もう一つの意味は、定数函数またはその(これらはふつうたがいに同一視される)を指し示すもので、この意味での「定数」は扱う問題における主変数に依存しない変数という形で表されるのが普通である。後者の意味での例として、は、与えられた函数の原始函数をすべて得るために特定の原始函数に加えられる、任意の(積分変数に依存しないという意味での)定数函数を言う。 例えば、一般の二次函数はふつう を定数(あるいはパラメタ)として のようにあらわされる。ここに変数 は考えている函数の引数のプレースホルダとなるものである。より明示的に のように書けば がこの函数の引数であることが明瞭で、しかも暗黙の裡に が定数であることを提示できる。この例では、定数 はこの多項式の係数と呼ばれる。 の項は を含まないからと呼ばれ(これを の係数と考えることができる)、多項式において次数が零の任意の項または式は定数である。.

新しい!!: セグメンテーション違反と定数 · 続きを見る »

実行ファイル

実行ファイル(じっこうファイル、Executable、Executable file)とは、コンピュータがプログラムとして解釈実行できるファイルである。実行可能ファイル、実行形式ファイル、あるいは単に実行形式とも呼ばれる。 多くの場合、特定のCPUの機械語を格納したバイナリ形式である(この形式の実行ファイルを単に「バイナリ(ファイル)」と呼ぶこともある)。あるファイルが実行ファイルかどうかは、主に規約の問題である。オペレーティングシステムによっては実行ファイルであることを示すファイル名の規約が存在する(拡張子 ".bin" ".exe"など)。あるいはファイルのメタデータで実行ファイルかどうかを示す(例えばUNIX系オペレーティングシステムのファイルパーミッションビット)。 最近のアーキテクチャでは、実行ファイルにはプログラム自体に含まれない情報も格納される。例えば、実行に必要な環境についての情報、デバッグ情報、シンボル情報などである。 実行ファイルには特定のオペレーティングシステムのシステムコールを呼び出すコードが含まれることもある。つまり実行ファイルはプロセッサ固有であるだけでなくオペレーティングシステム固有でもある。 ソースファイルと実行ファイルの違いはあいまいである。というのもソースから実行形式への変換が暗黙のうちに行われることがあるためである。インタプリタのファイル(シェルスクリプトやバッチファイルを含む)は、厳密に言えばインタプリタプログラムが解釈する命令を与えるものである。.

新しい!!: セグメンテーション違反と実行ファイル · 続きを見る »

例外処理

例外処理(れいがいしょり)とは、プログラムの上位の処理から呼び出されている下位の処理で継続不能、または継続すれば支障をきたす異常事態に陥ったとき、制御を呼び出し元の上位の処理に返し安全な状態になるよう回復処理をすること。その際に発生した異常のことを例外と呼ぶ。 継続不能や継続すると問題になる様な状態としては、次のようなものが挙げられる。.

新しい!!: セグメンテーション違反と例外処理 · 続きを見る »

ページング方式

ページング方式 (Paging) とは、コンピュータのオペレーティングシステムにおいて記憶装置をページと呼ばれる小さな単位に分割して割り当てを行うアルゴリズム群である。仮想記憶のベースとなる設計の一つ。 物理メモリ空間および論理メモリ空間を、基本的に一定サイズのページと呼ばれる単位に分割して管理を行う。論理メモリから物理メモリ空間への対応づけはページテーブルと呼ばれる構造体で実現され、この構造体はオペレーティングシステム (OS) によって管理される。物理メモリ空間に対応づけられていない論理メモリを参照した時にはページフォルトという例外によってOS側の例外処理ルーチンに制御が移行し、OS側の管理によって適宜対応したページを二次記憶等から読み込み、テーブルを更新してその参照した命令の実行に戻る。 これを実現するハードウエアであるメモリ管理ユニット (MMU) の中にはトランスレーション・ルックアサイド・バッファ (Translation Lookaside Buffer:TLB) と呼ばれる一種のキャッシュがあり、ユニット内部ではこの対応表に基づいてメモリアドレスの対応づけを行っている。このテーブルから参照出来なかったときをTLBミスと呼ぶ。このときの処理はMMUの設計によって異なり、MMU内にはTLBのみを持ちTLBミスが即例外を起こし、OSがページテーブルを引いてTLBに追加することによってTLBミスを解決するアーキテクチャや、ページテーブル自体のフォーマットがOSが使えるビットを含めた形でMMUによって定義されていて、TLBミス時にMMU自身が与えられた物理アドレスにあるページテーブルを参照するアーキテクチャもある。.

新しい!!: セグメンテーション違反とページング方式 · 続きを見る »

バッファオーバーラン

バッファオーバーラン(buffer overrun)、バッファオーバーフロー(buffer overflow)とは、コンピュータのプログラムにおける、設計者が意図していないメモリ領域の破壊が起こされるバグのひとつ、またはそれにより引き起こされた現象を言う。 バッファオーバーランはコンピュータセキュリティ上の深刻なセキュリティホールとなりうるため、バッファオーバーランが起こる可能性のあるコンピュータプログラムはすぐに修正する必要がある。 バッファオーバーランは、現在もっとも重大なセキュリティホールのひとつと考えられている。あるプログラムでバッファオーバーランの脆弱性が発見されると、一般に高い優先度で修正作業が行われ、更新バージョンのプログラムや修正パッチの公開・配布などが行われる。.

新しい!!: セグメンテーション違反とバッファオーバーラン · 続きを見る »

バスエラー

バスエラー (bus error) とは、コンピュータなどのバスへのアクセスに、何らかの問題があるため、読み書きのリクエストに応じられない、といったようなエラーである。 要因はおおざっぱに、論理的なもの(ソフトウェア的なもの)と物理的なもの(ハードウェア的なもの)に分けられる。論理的なものとしては、セグメンテーション違反やアラインメント違反(後述の「不整列アクセス」)など、物理的なものとしては、コンピュータの検出した一般的なデバイスが故障することが原因でも起きることがあるほか、まれにコンピュータハードウェアが物理的に壊れたことを示すことがある。 いずれにしても、詳細や細かい分類の違いはハードウェアやオペレーティングシステムのアーキテクチャや実装によって異なる(場合によっては、プロセッサの提供元とオペレーティングシステムの提供元で違う用語を使っているようなこともあるだろう)。いくつかの例を詳解する。; 存在しないアドレスへのアクセス; 不整列アクセス CPUは普通どんな時もデータバス幅いっぱいにデータをアクセスする。バイトデータにアクセスするために、CPUはデータバス幅いっぱいにメモリアクセスをして、ここのバイトをマスクしたりシフトしたりする。これは非効率的ではあるが、特に順番に処理を行うたいていのソフトウェアにとって本質的な特性だとして大目に見られている。バイトではなく、2つのアライメントにまたがる程より大きな単位のデータの場合は、データバスで2回以上データを取ってくる必要がある。CPUがサポートしていれば可能だが、この機能は機械語レベルで直接必要になることはめったにないので、CPU設計者は普通このような実装を避け、その代わりに不整列メモリアクセスとしてバスエラーを発行する。CPUのメモリアクセス機構とコンパイラの進歩により、以前よりも問題として目立たなくなってきている。64bitCPUへの移行が行われ、ワード幅が増えた関係で、バスエラーが多発しやすくなっている。.

新しい!!: セグメンテーション違反とバスエラー · 続きを見る »

メモリ保護

メモリ保護(めもりほご)とは、コンピュータのメモリアクセス制御の方式であり、多くのオペレーティングシステム (OS) の一部となっている。主な目的は、プロセスが自身に割り当てられていないメモリにアクセスすることを防ぐことである。例えばプログラムにバグがあって暴走しても、他のプロセスやオペレーティングシステムのメモリの領域を破壊することが無いように保護することである。通常、ハードウェア(メモリ管理ユニット)とOSが協調して、多重仮想記憶などを用いて保護する。コンピュータセキュリティのためのメモリ保護としては、アドレス空間配置のランダム化や実行保護といった追加技法が含まれる。.

新しい!!: セグメンテーション違反とメモリ保護 · 続きを見る »

メモリ管理

メモリ管理(メモリかんり)とは、コンピュータのメモリを管理するもの。単純化すれば、プログラム(プロセスなど)の要求に応じてメモリの一部を割り当てる方法と、そのメモリが不要となったときに再利用のために解放する方法を提供する。 今日では、CPU(メモリ管理ユニット)とオペレーティングシステムが協働して仮想記憶やメモリ保護を提供するのが一般的である。 また、各種データ構造を線形空間であるメモリに展開する場合の管理手法(アルゴリズム)についても「メモリ管理」と呼ばれる。.

新しい!!: セグメンテーション違反とメモリ管理 · 続きを見る »

ランタイムライブラリ

ランタイムライブラリ(run-time library)は、標準Cライブラリなど、コンピュータプログラムの実行時(ランタイム)にメインプログラムと常に同時に存在して利用される前提のライブラリである。詳細は環境(OSや言語や処理系)に依存する。.

新しい!!: セグメンテーション違反とランタイムライブラリ · 続きを見る »

オペレーティングシステム

ペレーティングシステム(Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。 オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置し、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行う。現代のオペレーティングシステムの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、などがある。オペレーティングシステムは、パーソナルコンピュータからスーパーコンピュータまでの各種のコンピュータや、更にはスマートフォンやゲーム機などを含む各種の組み込みシステムで、内部的に使用されている。 製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 OSの中で、タスク管理やメモリ管理など特に中核的な機能の部分をカーネル、カーネル以外の部分(シェルなど)をユーザランドと呼ぶ事もある。 現代の主なOSには、Microsoft Windows、Windows Phone、IBM z/OS、Android、macOS(OS X)、iOS、Linux、FreeBSD などがある。.

新しい!!: セグメンテーション違反とオペレーティングシステム · 続きを見る »

コンパイラ

ンパイラ(英:compiler)とは、コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換するプログラムである。.

新しい!!: セグメンテーション違反とコンパイラ · 続きを見る »

コアダンプ

アダンプ(英語:core dump)は、ある時点の使用中のメモリの内容をそのまま記録したものであり、一般に異常終了したプログラムのデバッグに使われる。最近では、特定のプロセスのメモリイメージ(あるいはその一部)とレジスタの内容などの情報を格納したファイルを指すのが一般的である。しかし、本来は使用中メモリの内容を全てプリントアウトしたものを指した。 その名前は、かつて主記憶用に利用された磁気コアメモリの内容を、ダンプトラックが砂利や小麦などを大量にダンプ(どさっと落とす)するかのようにプリントアウトすることから来ている。 異常終了したプロセスがコアダンプを出力することを、俗に「コアを吐く」という。.

新しい!!: セグメンテーション違反とコアダンプ · 続きを見る »

シグナル (Unix)

ナル(signal)とは、Unix系(POSIX標準に類似の)OSにおける、限定的なプロセス間通信の形式を使って、プロセスに対し、非同期で、イベントの発生を伝える機構である。シグナルが送信された際、OSは宛先プロセスの正常な処理の流れに割り込む。どんな不可分でない処理の間でも割り込むことができる。受信プロセスが以前にシグナルハンドラを登録しておけば、シグナル受信時にそのルーチンが実行される。さもなくば、デフォルトのシグナル処理が行われる。(同様なものは他のTSSなどでも開発されてはいるが、UNIXのシグナルは)1970年ごろベル研究所でUNIXに実装された。後にPOSIXである程度は標準化されているが、標準化が諦められているような振舞などもいくつかあり、特に他の幾つかの要素(fork等)とマルチスレッドとシグナルが絡むと実装毎の対処にプログラミングが大変になることがある。.

新しい!!: セグメンテーション違反とシグナル (Unix) · 続きを見る »

セグメント方式

メント方式 (memory segmentation)は、メモリ管理の方式の一つ。プログラムやデータをセグメントまたはセクションという「可変な」大きさのまとまりで管理する。セグメントは、メモリ空間上で、情報の属性などによって分類されたグループである。セグメント方式でメモリ位置を参照するには、セグメントを識別する値とセグメント内のオフセットを指定する。セグメントまたはセクションはプログラムをコンパイルした際に生成されるオブジェクトファイルでも使われており、それらがリンクされて実行ファイルが生成され、そのイメージがメモリにロードされる。 セグメントは仮想記憶やメモリ保護機能を実現する方式の一つである。プログラムのモジュール毎やメモリ使用法の異なるクラス毎に「コードセグメント」や「データセグメント」といった各種セグメントが生成される。1つのセグメントを複数のプログラムが共有することもある。.

新しい!!: セグメンテーション違反とセグメント方式 · 続きを見る »

ソフトウェア

フトウェア(software)は、コンピューター分野でハードウェア(物理的な機械)と対比される用語で、何らかの処理を行うコンピュータ・プログラムや、更には関連する文書などを指す。ソフトウェアは、一般的にはワープロソフトなど特定の作業や業務を目的としたアプリケーションソフトウェア(応用ソフトウェア、アプリ)と、ハードウェアの管理や基本的な処理をアプリケーションソフトウェアやユーザーに提供するオペレーティングシステム (OS) などのシステムソフトウェアに分類される。.

新しい!!: セグメンテーション違反とソフトウェア · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: セグメンテーション違反とC言語 · 続きを見る »

米国国家規格協会

米国国家規格協会(べいこくこっかきかくきょうかい、)は、アメリカ合衆国の国内における工業分野の標準化組織であり、公の合意形成のためにさまざまな規格開発を担っている。 略称はANSI(アンシ、アンジ、アンシー)。訳は米国国家標準協会とも。また、元は旧称 (ASA) の訳だった米国規格協会・米国標準協会とも呼ばれる。本部はワシントンD.C.にあるが、事務局はニューヨークにある。 電子工業会 (EIA)、電気通信工業会 (TIA) などの国内規格作成団体による仕様を承認し、ANSI規格とする。 ANSI規格は、日本の日本工業規格 (JIS) に相当するとされる。ただし、政府(大臣)が制定する規格であるJISと違い、ANSI規格を制定するのは政府から独立した私的な非営利組織のANSIである。 国際標準化機構 (ISO) 設立メンバーであり、ISO、国際電気標準会議 (IEC)、国際認定フォーラム (IAF) にアメリカ代表として参加している。アメリカの国内規格機関ではあるが、ISO等の規格に先だって決まることも多く、ANSI規格がISO規格になることも多い。また、製造業における国際標準化団体としてIPC (エレクトロニクス)があるが、ANSIの標準開発組織として正式に認可されている。ASCIIの文字コード規格 (X.34) が、ISO646になるなどの例がある。.

新しい!!: セグメンテーション違反と米国国家規格協会 · 続きを見る »

英語

アメリカ英語とイギリス英語は特徴がある 英語(えいご、)は、イ・ヨーロッパ語族のゲルマン語派に属し、イギリス・イングランド地方を発祥とする言語である。.

新しい!!: セグメンテーション違反と英語 · 続きを見る »

GNUデバッガ

GNUデバッガ(単にGDBとも)は、GNUソフトウェア・システムで動く標準のデバッガである。 これは、多くのUnix系システムで動作可能な移植性の高いデバッガであり、Ada、C言語、C++、FORTRAN、FreeBASICといったプログラミング言語に対応している。.

新しい!!: セグメンテーション違反とGNUデバッガ · 続きを見る »

Linux

Linux(リナックス、他の読みは後述)とは、Unix系オペレーティングシステムカーネルであるLinuxカーネル、およびそれをカーネルとして周辺を整備したシステム(GNU/Linuxシステムも参照)である。.

新しい!!: セグメンテーション違反とLinux · 続きを見る »

MC68000

MC68000(エムシーろくまんはっせん)、68000は米・モトローラ(現NXPセミコンダクターズ)が開発したMPU(MPUはマイクロプロセッサを指すのにモトローラが使った語でマイクロプロセッシングユニットの略)である。略して68K(ろくはちケー)などとも。後継MPUも含めた同一アーキテクチャのシリーズを総称するときは、680x0と呼称される。モトローラ自体は周辺LSIを含めてM68000ファミリと呼称した。MC型番は量産ロットで、量産先行品はXC型番となる。.

新しい!!: セグメンテーション違反とMC68000 · 続きを見る »

Microsoft Windows

Microsoft Windows(マイクロソフト ウィンドウズ)は、マイクロソフトが開発・販売するオペレーティングシステム (OS) の製品群。グラフィカルユーザインタフェース (GUI)を採用している。.

新しい!!: セグメンテーション違反とMicrosoft Windows · 続きを見る »

Null

Null(ヌル、ナル)は、何もない、という意味で、プログラミング言語などコンピュータ関係では、「何も示さないもの」を表すのに使われる。同様のものに、nil が使われることもある。他の名前のこともある。 本来 はドイツ語において数値の0(ゼロ)を意味する単語であり、ドイツ語における発音は である。一方、英語においては と発音される。実際の発音はを参照のこと。 日本においては原語に近い「ヌル」という発音が定着しているが、英語読みに近い「ナル」という発音で呼ばれる場合もある(専門書、国家試験など)。 プログラミング言語などにおいて、nullやnilといった予約語や定数名のものなどの意味がどういったものかは言語により、場合によっては実装ごとに違う。ポインタや参照のある言語では、ヌルポインタなどと呼ばれる何も指さない特別なポインタであることもあるし、Pythonのようにオブジェクトのこともある。古典的なLISPのように真理値の偽(の代表)や空リスト「()」を兼ねたもの(それらと同じもの)だったりすることもある。.

新しい!!: セグメンテーション違反とNull · 続きを見る »

UNIX

UNIX (ユニックス、Unix、)は、コンピュータ用のマルチタスク・マルチユーザーのオペレーティングシステムの一種である。公式な商標は「UNIX」だが、商標以外の意味として「Unix」、またはスモールキャピタルを使用して「Unix」などとも書かれる。Unixは1969年、AT&Tのベル研究所にて、ケン・トンプソン、デニス・リッチーらが開発を開始した。 当初はアセンブリ言語のみで開発されたが、1973年にほぼ全体をC言語で書き直した。このため、Unixは歴史上、初めて高水準言語で書かれたOSであると言われる。 1973年の段階ではPDP-11に依存したコードが多く、移植性は低かったが、その後徐々にPDP-11に依存したコードを減少させ、1978年にInterdata 8/32への移植に成功して以降、徐々に他のプラットフォームにも移植されていった。 現在では「Unix」という語は、Unix標準に準拠するあらゆるオペレーティングシステムの総称でもある。現在ではUnixシステムは多数の系統に分かれており、AT&Tの開発停止後も、多数の商用ベンダーや非営利組織などによって開発が続けられている。 1970年代から1980年代の初期にかけて、Unixは大学や研究所などの教育機関で広範囲に採用され、特にカリフォルニア大学バークレー校をオリジナルとするBSD系統が誕生した。また Version 7 Unix や UNIX System V の特徴を持つオペレーティングシステムは「伝統的なUNIX」(traditional Unix)とも呼ばれる。 2007年に、「UNIX」の商標の所有者である標準化団体のThe Open Groupは、Single UNIX Specificationを完全に満たすと認証を受けたシステムのみが「UNIX」の商標を得られるとした。このためそれ以外のシステムは(ずっと以前から、AT&T版およびBSD以外を指して使われていた用語だが)「Unixシステムライク」または「Unixライク(Unix系)」と呼ばれるようになった。ただし The Open Groupはその呼称を気に入っていない。 現在では多く使われているUnixとしてはmacOS、AIX、HP-UX、Solarisなどがある(いずれも商用)。また認証を受けていないUnix系としてはLinux(派生OSにAndroid他)やMINIX、BSDの派生OS(FreeBSD、NetBSD、OpenBSD、DragonFly BSDなど)がある。.

新しい!!: セグメンテーション違反とUNIX · 続きを見る »

文字列

文字列(もじれつ)は、単語や文章のような、文字の連なったもの。ストリング (string)、テキスト (text) という場合もある。コンピュータ、特にプログラミングの分野で用いることが多い。.

新しい!!: セグメンテーション違反と文字列 · 続きを見る »

ここにリダイレクトされます:

セグメンテーションフォールト

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »