我正在爲存儲一些股票市場數據的類項目創建鏈接列表。我試圖將一些數據存儲到堆棧而不是mallocing到堆中。我正在嘗試使用memcpy來做到這一點。我的代碼是這樣的:使用memcpy而不是mallocing將空間存儲到堆棧
struct trade{
int a,b;
float c;
struct trade *n;
};
char stack[100];
int i = 0;
void newNode(struct trade **head, int a, int b, float c){
struct trade *node;
if(i<99){
memcpy(&a,&stack[i],4);
i = i + 4;
node = (struct lnode*) malloc(16);
}
else
node = (struct lnode*) malloc(20);
}
.....
.....
}
我的newnode函數是每當我創建一個新節點,我需要malloc空間來調用它。
如果堆棧數組中仍有空間,我將int複製到堆棧數組中,否則我將malloc放入堆中。我使用20和16,因爲如果我將int存儲在堆棧中,那麼我需要malloc空間來存放結構中剩餘的16個字節,否則我需要20個字節的malloc空間。
由於某種原因,我在執行此操作時遇到段錯誤。如果有人能指引我朝着正確的方向,我將不勝感激。
謝謝!
當'i'爲'96'且int的第4個字節爲memcpy()'d時會發生什麼? – user268396 2012-04-15 03:01:42
嗯,我不能是96.因爲索引從0開始,它只增加4我所以我會在95和複製第4個字節它將達到堆棧數組的末尾,它不會進入如果陳述不再 – AndroidDev93 2012-04-15 03:05:03
你爲什麼試圖這樣做? – 2012-04-15 03:05:48