コンピュータの中央処理装置(CPU)が理解し実行することができる命令からなる言語。
機械語はコンピュータが理解できる唯一のプログラミング言語である。
ファイルを種類ごとにフォルダ分けするように、クラスを種類ごとに分けて管理する機構。
Visual Studio等のこと。
Visual Studioはデバッグ機能として、ステップ実行(行単位での実行)を備える。
コンピュータのメモリのうち、それぞれのプロセスに割り当てられるメモリのこと。
プログラムコードや、あらかじめサイズが決まっている変数の内容を格納するために使われる。
CPUによって処理される実行単位。
イメージとしては、プログラムの実行中においてソースコード上の命令語の上から実行していくが、
「ソースコード上で実行処理が行われてる箇所」のようなイメージ。
コールスタック (call stack) はインタプリタの仕組みの一つ。
複数階層の関数を呼び出したスクリプト内の位置を追跡し続けること。
どの関数が現在実行されているのか、その関数の中でどの関数が呼び出されたか、など。
スクリプトが関数を呼び出すとき、インタプリタはそれをコールスタックに追加し、
それから関数の実行を始める。
その関数から呼び出されたどの関数も、コールスタックのその上に追加され、呼び出し先を実行する。
現在の関数が終了すると、インタープリターはスタックからそれを外し、最後のコードがリストされている場所から実行を再開します。
スタックが割り当てられている量よりも多くのスペースを使用した場合、 "stack overflow" エラーとなる。
プログラムの実行時、呼び出したサブルーチンに関する情報を蓄えるスタックのこと。
サブルーチン(関数やメソッドなど)を呼び出すたび、戻り先のメモリアドレス(リターンアドレス)、
戻り値や引数、(静的変数でない)ローカル変数のためのメモリ領域といった情報を格納(ワインド)します。サブルーチンから抜け出すときには、この情報を取り除きます(アンワインド)。ここで、1つのサブルーチンに関する情報のまとまりを、スタックフレームと呼びます。
複数のスレッドが動作しているプログラムでは、コールスタックはスレッドごとに存在します。
スタックフレームにアクセスするために、コールスタックの最上段の位置をあらわすスタックポインタを使ったり、スタックフレーム内の特定の情報がある位置をあらわすフレームポインタを使ったりします。これらは専用レジスタの一種です。
コールスタックの必要性や利用方法はいくつかありますが、特にサブルーチン内のコードの実行を終えた後の戻り先を制御するために重要な仕組みになっています。高級言語では、コンパイラが自動的に必要なコードを生成しますが、低級言語では、プログラマが自力で行わなければならない場合もあります。
デバッグ目的で利用されることも多く、任意のタイミングでコールスタックの内容をみることで、現在までのサブルーチンの呼び出し経路、そのときの引数やローカル変数の内容などを確認できます。このようなデバッグの手法をスタックトレースといいます。
サブルーチンの呼び出しの連鎖が長く続くと、スタックフレームが膨大になり、コールスタックの領域を使い尽くすことがあります。このような状況を、スタックオーバーフローと呼びます。スタックオーバーフローが起こると、たまたまメモリ上にあった無関係のデータを上書きしてしまい、メモリ破壊を起こす可能性があります。実行時エラーになる場合もある。
プロジェクトファイルのプロパティにある、ビルド出力されたファイルを削除するということ。(dll、pbdとか)
インスタンスはクラスから作られたオブジェクトのこと。
クラスはただの設計図であり、その設計図から「もの」を作らなければ実際に使うことはできない。
そのため、設計図の役割を持つクラスから、オブジェクトという実体、「インスタンス」を作る必要がある。
C++/CLIにおいて、ハンドル型の変数を宣言するには、変数名の前に^記号を指定する。
ハンドル型変数に代入可能なのは、参照クラス型オブジェクトへのハンドル。
gcnew演算子が返す結果こそ、オブジェクトへのハンドルである。
参照クラス型のインスタンスを生成し、変数に代入する場合は次のように記述する。
DataTable ^ dt = gcnew DataTable();
ビルドの種類 | ビルド対象範囲 |
ビルド | 更新されたソースファイルに対してのみビルドを行う。 |
リビルド | 全てのソースファイルを強制的にビルドを行う。 |
DataTable ^ dt = gcnew DataTable(); DataRow ^ dr; dt->Columns->Add("col1"); dt->Columns->Add("col2"); dt->Columns->Add("col3"); dt->Columns->Add("col4"); dt->Columns->Add("col5"); dr = dt->NewRow(); dr["col1"] = data1; dr["col2"] = data2; dr["col3"] = data3; dr["col4"] = data4; dr["col5"] = data5; dt->Rows->Add(dr); return dt;
ウォッチでの中身の覗き方
プログラムデータベースファイル。プログラムのデバッグ時に使う。
ソースコードのファイル名や行番号、変数名等を保持している。
XMLリソースファイル。