我正在为一个存储一些股票市场数据的类项目创建一个链接列表。我试图将一些数据存储到堆栈中,而不是分配到堆中。我正在尝试使用 memcpy 来做到这一点。我的代码是这样的:
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 函数。
如果堆栈数组中仍有空间,我将 int 复制到堆栈数组中,否则我 malloc 到堆中。我使用 20 和 16,因为如果我将 int 存储在堆栈中,那么我需要为结构中剩余的 16 个字节分配空间,否则我将分配 20 个字节的空间。
出于某种原因,当我这样做时会出现段错误。如果有人能指出我正确的方向,我将不胜感激。
谢谢!