2016-03-23 8 views
1

コードのパフォーマンスを向上させるために、コンパイル段階で相対距離を使用することがわかっています。たとえば、2つのローカル整数の距離が4であることが分かります。 私の質問は、コンパイル時に未知のサイズの配列についてです。コンパイル段階で不明なサイズ配列の割り当てをC++がどのように処理するか

たとえば、コンパイラには、ローカル配列に割り当てるメモリ量次のコードで: どのようにそれはローカル変数のLOCAL2との間の相対距離を知っているし、サイズ

#include <iostream> 
using namespace std; 

int main() { 
    int size = std::getchar(); 
    int arr[size]; 
    int local2; 
    return 0; 
} 
+6

これは有効なC++ではありません。 – dandan78

+0

が正常にコンパイルされました。https://ideone.com/SsvycN – Idan

+2

@ldanコンパイルしないとは言いませんでした。私はちょうどそれが有効なC + +ではないと言った。 – dandan78

答えて

1

これはありません。それはコンパイル時のエラーです。あなたはポインタとダイナミックメモリの割り当て/割り当てを調べたいでしょう。 http://en.cppreference.com/w/cpp/memory/new/operator_new

基本的には、単一インスタンスの場合、新規/削除を使用します。配列に対しては新しい[]/delete []を使います。 delete []とnew []をnewとdeleteを組み合わせて使用​​しないでください。悪いことが起こります。

関連する問題