0

この関数では、メモリ内のチャンクへの void* ポインターを返しています。

メモリ.cpp:

int mem[1000];
int* pointers[100];
int start_index = 100;

void* allocate(int size) {
    pointers[0] = &mem[start_index];
    return (void *) pointers[0];
}

main.cpp:

int* arr = (int*) allocate(50); // allocate array of size 50 starting at mem[100]
arr[0] = 62;                    // changes mem[100] to 62

ここで、この関数のユーザーに mem 配列の別の場所を使用させたいとします。割り当て関数のユーザーには通知されません (データを失うことは問題ないと仮定します)。

私はこれを行うことはできませんか?

メモリ.cpp:

pointers[0] = &mem[200];

この行がmemory.cppで実行された後、私arr[0]mem[200]. 割り当て関数のプロトタイプを変更せずにそれは可能ですか?

ありがとう

4

2 に答える 2