1

一部のストレージを備えた特別なハードウェア ユニットがコンピューターに接続され、メモリ マップされている場合、そのストレージはアドレス範囲 0x55500000 ~ 0x555fffff でアクセス可能です。このハードウェア ユニットを C++ プログラムにどのように接続して動的メモリコンピューターのメモリではなく、このハードウェア ユニットに割り当てられていますか? 次の機能を持つクラスを実装する必要があります。

void * allocMemoryInMyHardware(int numberOfBytesToAllocate);

割り当てられたメモリ チャンクへのポインタ、または割り当てられない場合は null を返します。

4

1 に答える 1

2

独自のアロケーターを作成する必要があります。インターネットでサンプル コードを検索し、微調整します。要件が単純な場合、基本的なアロケーターは 2 ~ 4 時間で最初から作成できます。このアプローチは、プラットフォームに仮想メモリ管理がなく、コードがアドレスの範囲に直接アクセスできる場合に機能します。それ以外の場合は、プラットフォームでのドライバー開発に飛び込む必要があります。

典型的な戦略は、割り当てられた各ユニットにヘッダーを追加し、空きメモリ領域の二重リンク リストを編成することです。NT ヒープも同様に機能します。

于 2012-07-12T07:48:05.237 に答える