0

タイトルはあまり明確ではなく、かなり伸びてしまいますが、特定のコンテキストで質問しています-ユーザーの明示的なメモリの再割り当ては実行されていません。チャンクは 1 回だけ割り当てられ、追加も何も行われません。問題は、そのアドレスが同じままになるかどうかです。

私が質問している理由は、VM の小さな最適化を検討しているためです。グローバル データが最初に割り当てられるとき、関数の最初の呼び出しはベース ポインターからのオフセットとして格納されますが、最初に実行されると値がキャッシュされ、命令は、毎回余分な計算を保存するために直接呼び出しに変更されます。したがって、最適化が機能するためには、そのデータが保持される必要があります。

4

2 に答える 2

2

はい、そうでなければポインターは役に立たず、それらを使用するにはロック/ロック解除の仕組みが必要になります (fixedオブジェクトを移動できないようにするキーワードがある C# のように)

于 2013-08-11T13:18:37.533 に答える
1

アドレスは変更されません。メモリ プールからメモリのブロックを要求したら、それをいじってみましょう。OS は、要求するまで、そのブロックに再びアクセスすることはありませんfree

見てみるとrealloc面白い機能です。アドレスが利用可能な場合、既存のメモリ ブロックにメモリ ブロックを「追加」できますsreallocing後のメモリ ブロックは常に同じであるとは限りません。

注:mallocあるサイズのメモリブロックを取得sした場合、同じサイズの別のブロックfreeを取得した場合、同じメモリ ブロックを取得できるとは限りません。mallocs

于 2013-08-11T13:21:01.523 に答える