免責事項:これは宿題のためのものですが、質問される質問は実際の割り当てとは無関係です。ポインタ値が返された後に変更されるのはなぜですか?
関数から返される直前のmy_malloc関数で、自分のクラスの1つに単純なメモリマネージャを実装する必要があります。返される値はこれ(つまり:0x7fb0049ed410)であり、呼び出し元の関数はそれです別のもの(例:0x49ed410)。
my_malloc(unsigned int);
typedef void* Addr;
Addr raddr = (Addr) (memoryHeader + sizeof(header)))
printf("Giving Memory: %p : %p\n", addr, raddr);
return raddr
呼び出し関数();
void* mem = my_malloc(10*sizeof(char));
printf("Calling Function: %p\n", mem);
これは便利ではない場合、私は申し訳ないが、私は、これは、コードのすべての600と何かのラインを与えることなく全体に問題を取得するのに十分かもしれないと思いました。
incompatible integer to pointer conversion assigning to 'void *' from 'int'
'memoryHeader'とは何ですか?それはスタックかヒープ上にありますか? 600行のコードが必要だとは思わないが、問題を説明するために**問題を再現することができるおそらく20行または30行のコードを**再現する必要がある。 –
問題が再現可能であれば、それは役に立ちます。すなわち、短い、自己包含、正しい(コンパイル可能)、例は助けになる; http://sscce.org/ – antak
[最小限で完全で検証可能なサンプルを作成する方法] –