2014-08-28 50 views
1

在函數fun中,我分配了數組A.在運行時已知數組的大小,我從哪個區域獲取內存。我瘋狂的猜測是堆棧,但我想不出任何理由。下面的數組從哪裏獲取內存?

#include<iostream> 
using namespace std; 


void fun(int n) 
{ 
    int A[n]; 

    //do something with array 

    for(int i=0;i<n; i++) 
    cout<<A[i]<<" "; 
    cout<<"\n"; 

} 

int main() 
{ 
    int n; 
    cin>>n; 
    fun(n); 
    return 0; 

} 
+0

我希望你明白,VLA的(變長數組)是一種非標準的功能。 – user2030677 2014-08-28 01:35:36

+0

@ user2030677是的,我現在就做。 – rgaut 2014-08-28 17:26:06

回答

4

「哪裏以下數組從得到的記憶?」

從功能本地堆棧fun()

注:
使用可變堆本地陣列的分配是一個編譯器(標準版本)特定擴展。擴展的通用術語是VLA(可變長度數組),並且受到若干編譯器(例如GCC g ++)的支持,並且也被一些c標準定義所要求。

這裏查看更多澄清討好:Does C++ support Variable Length Arrays?

+0

c99支持VLA – tristan 2014-08-28 01:38:53

+0

@tristan很高興知道;-) ... – 2014-08-28 01:39:43

相關問題