目次
27 関係: ASCII、バッファオーバーフロー、ポインタ (プログラミング)、ヌルポインタ、ヌル文字、テオ・デ・ラート、オペレーティングシステム、サブルーチン、BSD libc、C11 (C言語)、C言語、関数プロトタイプ、FreeBSD、GNU Cライブラリ、ISO/IEC JTC 1、Linux、MacOS、Microsoft Visual C++、OpenBSD、POSIX、Solaris、Strcat、Strcpy、Strlcpy、標準Cライブラリ、文字列、文字列結合。
ASCII
ASCII(アスキー、American Standard Code for Information Interchange)は、1963年に制定された、アメリカ合衆国における情報通信用の文字コードである。日本語訳は「情報交換用米国標準コード」となるが、一般には日本国内でもASCIIと表記する。なおInternet Assigned Numbers Authority (IANA) はこれをASCIIではなくUS-ASCIIと表記するのが望ましいとしている。
バッファオーバーフロー
バッファオーバーフロー(buffer overflow)またはバッファオーバーラン(buffer overrun)は、コンピュータのプログラムにおけるバグのひとつ、またはそれにより引き起こされる現象で、プログラムがバッファに割り当てられた空間よりも大きなデータを書き込むことで、データがバッファ境界からあふれ、バッファの範囲外のメモリを上書きし、元々そのメモリにあったデータを破壊してしまうことを指す。 バッファオーバーフローは、上書きされるメモリ領域がスタック領域なのかヒープ領域なのかに応じてそれぞれスタックベースのバッファオーバーフロー、ヒープベースのバッファオーバーフローと呼ばれる。なお、名称が似ているスタックオーバーフローとは別の現象である。
ポインタ (プログラミング)
ポインタあるいはポインター(pointer)は、 コンピュータで処理するデータやプログラムの場所を記憶して指示するレジスタや変数の分類や呼称。 https://riscv.org/technical/specifications/ https://developer.arm.com/documentation/ddi0487/latest/ https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html"。
ヌルポインタ
ヌルポインタ(null pointer )とは、何のオブジェクトも指していないことを表す特別なポインタの値である。 プログラムではヌルポインタを、不定長のリストの終端を表したり、何らかの動作の結果が失敗であることを表したりするのに使用する。後者の用法は、nullable型やの Nothing 値(None 値)を使用することもできる。 ヌルポインタの値や型がいかなるものかという詳細は言語によって異なる。実際的にはいかなるオブジェクトも参照しないという言語もあり、参照先を求めようとするとJava(NullPointerException)のように例外が発生するものもある。 ヌルポインタはほとんどの処理系(この場合、言語処理系プログラムだけではなく、ハードウェアまでを含めて)で、内部的に数値0で表現されるが、ごく希に、0でない処理系もある。言語仕様上の意味としては普通「アドレス0(あるいは他のアドレス)を指し示すポインタ」ではなく、どこも指し示さないものとされる。
ヌル文字
ヌル文字(ヌルもじ、)またはヌル終端文字(ヌルしゅうたんもじ、)は、値0の制御文字である。NULと表記される場合もある。 多くの文字集合にはヌル文字の定義がある。ISO/IEC 646(ASCII)、、、ISO/IEC 10646(Unicode)、EBCDICなどの文字集合は全てヌル文字を含んでいる。一方で、JIS X 0208などのように、これを収録しない文字集合もある。ASCII、Unicode、EBCDICなどではヌル文字はコードポイント0に当てられている。多くのプログラミング言語ではヌル文字を使用できる。C言語などでは、ヌル文字のコードは0であると定義されている。
見る Strlcatとヌル文字
テオ・デ・ラート
テオ・デ・ラート(Theo de Raadt, 英語での発音は。1968年5月19日 - )は、カナダ在住のソフトウェア開発者。カルガリー大学でコンピュータ科学を専攻し1992年に学士号を取得した。南アフリカのプレトリア出身。 OpenBSDプロジェクトおよびOpenSSHプロジェクト代表。NetBSDプロジェクト創始者の一人でもあったが、メンバーとの軋轢のためプロジェクトを追放され、独自にOpenBSDプロジェクトを開始した。そのフリーソフトウェアに対する信念や、容赦しない議論スタイルのためにこれまで多くの論争をひき起こしてきたことでも知られている。 2004年度FSFフリーソフトウェア賞を受賞。
オペレーティングシステム
オペレーティングシステム(operating system、略称:OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)を司るシステムソフトウェアである。
サブルーチン
プログラミングにおけるサブルーチン(subroutine)は、プログラム中で意味や内容がまとまっている作業をひとつにまとめたものである。サブプログラムあるいは副プログラム(subprogram)大滝みや子『2020年版 基本情報技術者 標準教科書』オーム社、2019年。pp.95-96「手続きと関数」「再帰呼び出し」の章とも呼ばれ、単に「ルーチン」(routine)と呼ばれることもある。プログラミング言語によっては、関数(function)やプロシージャあるいは手続き(procedure)とも呼ばれる。
BSD libc
BSD libc はFreeBSD、NetBSD、OpenBSDなどのBSD系オペレーティングシステムで使われている標準Cライブラリの実装。1994年6月の4.4BSDで初めて登場した。ISOやPOSIXでは規定されていない拡張を含む。 拡張の一例:。
C11 (C言語)
C11とは、ISOで定められたC言語の規格のひとつ、ISO/IEC 9899:2011の通称であり、その前の規格であったC99の後継である。規格策定中の暫定名称は C1X であった。新しい規格であるC11では、マルチスレッドのサポートを改善する詳細なメモリモデルなどの、一般的な現代のコンパイラでサポート済みの機能を主に規格化している。C99の実装では適合が遅れたため、C11では中核となる言語規格に準拠し易いよう特定の機能をオプションにしている。 2011年4月にC11の最終ドラフトであるN1570が発行され、2011年10月10日に新しいC11規格はその最終ドラフトレビューをパスして公式にISOによって承認された。それから2011年12月8日に参加国による決議が必要な批評もなく、ISO/IEC 9899:2011として発行された。
C言語
C言語(シーげんご、C programming language)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語である。英語圏では「C language」または単に「C」と呼ばれることが多い。日本でも文書や文脈によっては同様に「C」と呼ぶことがある。制御構文などに高水準言語の特徴を持ちながら、ハードウェア寄りの記述も可能な低水準言語の特徴も併せ持つ。基幹系システムや、動作環境の資源制約が厳しい、あるいは実行速度性能が要求されるソフトウェアの開発に用いられることが多い。後発のC++やJava、C#など、「C系」と呼ばれる派生言語の始祖でもある。 ANSI、ISO、またJISにより言語仕様が標準規格化されている。
見る StrlcatとC言語
関数プロトタイプ
関数プロトタイプ(function prototype)は、C言語やC++における関数の宣言であり、関数本体を省略して、関数名、アリティ、引数のデータ型、返り値のデータ型を示したもの。関数定義は関数が何をするかを示すが、関数プロトタイプはそのインタフェースを示すと考えることができる。 プロトタイプでは、引数の名前はオプションだが、その型指定は必須である。ただしCでは引数指定を空にすることで、未知(任意)とすることもできる。
FreeBSD
FreeBSD(フリービーエスディー)は、フリーでオープンソースのUnix系オペレーティングシステム (OS) である。Research UnixをベースにしたBerkeley Software Distributionに由来しており、最初のバージョンは1993年にリリースされた。2005年には、FreeBSDは最も人気のあるオープンソースのBSDオペレーティングシステムとなり、単純に寛容にライセンスされたBSDシステムのインストール数の4分の3以上を占めていた。 FreeBSDはLinuxと似ているが、 範囲とライセンスに2つの大きな違いがある。すなわち、Linuxはカーネルとデバイスドライバのみを提供し、システムソフトウェアをサードパーティーに頼っているのに対し、FreeBSDはカーネル 、 デバイスドライバ 、 ユーザーランドユーティリティ、およびドキュメントといった完全なシステムを維持している。FreeBSDのソースコードは通常、寛容なBSDライセンスでリリースされており、Linuxで使われているコピーレフトのGPLとは対照的である。
GNU Cライブラリ
GNU Cライブラリ(グニュー・シーライブラリ、glibc、ジーリブシー)は、GNUプロジェクトによる標準Cライブラリ実装。元々はGNUオペレーティングシステム向けにフリーソフトウェア財団 (FSF) が作成したもので、2001年からは主要なコントリビュータでメンテナーでもあるレッドハットのウルリッヒ・ドレッパーらからなる委員会が開発を監督していたが、2012年3月にコミュニティ主導の開発プロセスへの移行のために委員会の解散が決定した。 GNU Lesser General Public Licenseでリリースされているフリーソフトウェアである。
ISO/IEC JTC 1
ISO/IEC JTC 1とは、国際標準化機構 (ISO) と国際電気標準会議 (IEC) の第一合同技術委員会 (Joint Technical Committee 1) のこと。情報技術 (IT) 分野の標準化を行うための組織である。1987年に設立された。 それ以前には、コンピュータや情報分野を扱う国際標準化組織はISO, IECそれぞれに独立して存在し(ISO/TC 97, IEC/TC 53, IEC/TC 47, IEC/TC 83など)、一種の縄張り争いの様な状況になっていた時期があった。この状況を解消するため、両機関の間で話し合いが持たれ、その結果としてJTC 1が成立した。JTC 1と銘打たれているが、JTC 2は長い間、存在しなかった。2009年、エネルギーの効率化と再利用に関する規格の策定を目指し、ISO/IEC JTC 2が設立された。
Linux
Linux(リナックス、他の読みは#「Linux」の読み方で後述)とは、狭義にはUnix系オペレーティングシステムカーネルであるLinuxカーネルを指し、広義にはそれをカーネルとして周辺を整備したシステム全体のことをいう(GNU/Linuxも参照)。
MacOS
macOS(マックオーエス)は、Appleが開発・販売するMacのオペレーティングシステムである。当初の名称はMac OS X(マックオーエステン)で、のちにOS X(オーエステン)に改められていた(後述)。 技術的には直系ではないが、Classic Mac OS(Mac OS、System)の後継として、新たにBSD系UNIXをベースに開発された。
Microsoft Visual C++
Visual C++ (マイクロソフト ビジュアル シープラスプラス;マイクロソフト ヴィジュアル シープラスプラス)とはマイクロソフト製のC、C++、C++/CLI用統合開発環境 (IDE) であり、コンパイラやデバッガを含む。通称VCあるいはVC++、MSVCなど。前身はMicrosoft C/C++などがある。
見る StrlcatとMicrosoft Visual C++
OpenBSD
OpenBSD(オープンビーエスディー)は、セキュリティや正当性(correctness)などを特に重視した、BSDをベースにして開発された、オープンソースの、Unix系オペレーティングシステム (OS)。NetBSDの主要開発者のひとりであるテオ・デ・ラート(Theo de Raadt)が、1995年にNetBSDからフォークさせる形で開発が始まったものであり、BSDの子孫のひとつである。
POSIX
POSIX(ポジックス、Portable Operating System Interface)は、オペレーティングシステム (OS) の標準的なインタフェースおよび環境を定義するIEEE規格であるIEEE公式サイト。。ソースコードレベルでの移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的として、主にUNIX系のOSに関して、各OSが共通して持つべきコマンドラインインタプリタ(シェル)、共通のユーティリティプログラム、およびアプリケーションプログラミングインタフェース (API) について定めている。POSIX仕様に準拠したソースコードは、POSIX準拠OSであればどれでも動作させることができる。アプリケーション開発者とシステム実装者の両方から利用されることを意図している。
Solaris
Solaris(ソラリス)はサン・マイクロシステムズ(サン)によって開発され、UNIXとして認証を受けたオペレーティングシステム (OS) である。2010年1月27日のオラクルによるサン買収に伴い、現在の開発は同社が担っている。 プロプライエタリソフトウェアであるが、かつてコア部分(ONという:OS+NETの略)はOpenSolarisとしてオープンソース化されたことがある。しかし2010年8月以降、ONのソースコードの公開はされていない。 なお、公開されていたONのソースコードは、有志の手によってillumosプロジェクトとしてオープンソース化されたまま更新が続けられている。
Strcat
strcatは、ある文字列に別の文字列を連結 (concatenate) するC言語の関数である。 標準Cライブラリの文字列操作関数群が宣言されているヘッダーファイル string.h に含まれる。
Strcpy
strcpyは、指定したアドレスに指定した文字列をコピーするC言語の関数である。 標準Cライブラリの文字列操作関数群が宣言されているヘッダーファイル string.h に含まれる。 ストリングコピーなどと呼ばれることが多い。
Strlcpy
strlcpy はC言語で文字列を安全にコピーするための関数である。ISO/IEC で規定された標準Cライブラリの関数ではないが、BSD libc などに含まれている。危険な使い方をしてしまいがちな関数strcpyやstrncpyの代替として、Todd C. MillerおよびTheo de Raadt (テオ・デ・ラート) が開発した。
標準Cライブラリ
標準Cライブラリ(ひょうじゅんシーライブラリ)は、C言語の標準規格で定められた、型・マクロ・関数の集合からなるライブラリである。
文字列
文字列(もじれつ)は、単語や文章のような、文字の連なったもの。ストリング (string)、テキスト (text) という場合もある。コンピュータ、特にプログラミングの分野で用いることが多い。
見る Strlcatと文字列
文字列結合
プログラミングにおいて、文字列結合(もじれつけつごう)または文字列連結(もじれつれんけつ)(string concatenation)とは、ある文字列の後ろに別の文字列をつなげて1つの文字列にする処理のことである。例えば、「ABCDE」という文字列と「12345」という文字列を結合すると「ABCDE12345」という1つの文字列になる。

