私たちは、C++ でヒープを作成および管理する必要があるプロジェクトに取り組んでいます。メモリを格納するために文字配列を使用しています (プロジェクトでは "new" を使用しません)。型 T のポインターを返す必要がある割り当て関数があります。いくつかの型定義とそれを支援するテンプレートがあります。
template <typename T>
typedef T value_type;
typedef value_type* pointer;
したがって、「ポインタ」を返す必要があります。質問:
文字配列内の特定のインデックスを指す「ポインタ」を返すにはどうすればよいでしょうか?
割り当てられたブロックの開始点がアドレス 5 を指し、型名 T が int であるとします。5 の配列インデックスを指す int ポインターを (「ポインター」を使用して) 作成するにはどうすればよいでしょうか?
reinterpret_cast <pointer> (a[index])
配列インデックスをポインターにキャストするために使用してみました。さらにreinterpret_cast <pointer> (a + index)
、配列ポインターを取得し、それをインデックスで上に移動し、それを型ポインターにキャストしようとしました。毎回、ポインターは「0xfffffffffff」または一連の f の後に 0c または何らかのランダムな値が続くようなものを指しているため、プログラムの後半 (たとえば、構成関数) で参照解除すると、セグメンテーション違反が発生します。
ありがとう!
配列を編集する "a" は文字配列です