私のコードでは、heap_ptrの古い値へのポインタを返し、heap_ptrをbytes_allocの量だけ移動するように求められます。私は既にvoid *heap_ptr
としてheap_ptrを宣言しており、heap_ptrには8192バイトを指定するためにheap_ptr = mmap(NULL, 2*4096, ...)
と宣言しています。私の問題は、bytes_allocがint型であるため、heap_ptrを2000バイトだけ正しく移動しているかどうかがわかりません。 heap_ptr = (void *)((char *)heap_ptr + (char)bytes_alloc)
のようにbytes_allocをキャストする必要がありますか?ここでポインタ変数を指定されたバイト数だけ移動するには?
私の関数である。
void heap_alloc(int bytes_alloc) //bytes_alloc is 2000
{
void *temp_heap_ptr; //teporary pointer to my mmap heap_ptr
heap_ptr = (void *)((char *)heap_ptr + bytes_alloc) //this is where my question is
return (temp_heap_ptr);
}
あなたが初期化されていない変数 'temp_heap_ptr'を返し、私はあなたがその行に' temp_heap_ptr = 'を書くためのものと仮定します。また、 'void'関数は値を返さないかもしれません。実際のコードを投稿しようとしてください。さもなければ、回答者は実際のコードが何であるかについて多くの推測をしなければなりません。 –
"// mmap heap_ptrへのteporaryポインタ" - いいえ、特に何も設定していないので、特に何もない一時ポインタです。 – immibis