この関数では、メモリ内のチャンクへの 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]
. 割り当て関数のプロトタイプを変更せずにそれは可能ですか?
ありがとう