1

new演算子を使用せずに新しいオブジェクトを割り当てます。そして、私は2つの方法を見つけました:

最初のものは追加のバッファを使用しています (追跡する必要があります):

char buffer[BUFFER_SIZE];
char *pos = buffer;

Object *myObject; = (Object*)pos;
pos += OBJECT_SIZE; 

2つ目は直接メモリ スタック (esp) を使用しています。

Object *myObject;
__asm sub esp, OBJECT_SIZE //make room for a variable
__asm mov dword ptr[myObject], esp

エラーは表示されませんが、それらの違いは何ですか? そして、どの方法がより良く、より速く、より安全ですか?

4

1 に答える 1

1

実際には、これを行う一般的なライブラリ関数があります: alloca. 通常、ほとんどのコンパイラが最適化について実際にインテリジェントであることを除いて、コードの 2 番目のスニペットのように機能します。

最初のものの主な欠点は次のとおりです。

  1. 限られた量のメモリしかありません。
  2. 使用していないメモリの量が無駄になります。
于 2013-04-30T02:42:27.853 に答える