我真的很新的C和東西纏着我...C中的數組的內存分配
我宣佈一個typedef:
typedef struct{
double
real,
img;
}complex;
而且,在函數內部,我聲明如下數組:
complex system[MAX_NODES+1][MAX_NODES+2];
的第一件事情與該陣列的元件的功能不被初始化,但是,如果應用程序將運行期間編譯和崩潰,除非具有相同尺寸的另一陣列和類型也DECL ARED(即使不使用它):
complex system1[MAX_NODES+1][MAX_NODES+2],
complex system[MAX_NODES+1][MAX_NODES+2];
這使我相信這是內存的問題,也許第一個系統分配了所需的內存...是這樣嗎?如果是這樣,爲什麼?
MAX_NODES是一個常量設置爲300,所以我認爲數組聲明已經分配內存......我應該實際使用malloc嗎?
不管怎麼說,宣佈系統靜態似乎解決了問題:
static complex system[MAX_NODES+1][MAX_NODES+2];
我只是不知道爲什麼......我知道一個靜態變量內的功能,使該變量在隨後的保值函數調用,但是這與內存有什麼關係或者這個問題是什麼?有小費嗎?
非常感謝。
你的代碼聽起來很合理。你能給出更多的上下文嗎?是否有可能嘗試訪問超出其範圍的數組(例如,在函數之外)? – happydave
需要顯示真實的,可編譯的代碼 - 包括初始化。 – Rob
這個問題幾乎必須在你的初始化函數中。我認爲我們需要看到它。那之後運行 – Baldrick