株式市場データを格納するクラス プロジェクトのリンク リストを作成しています。ヒープに malloc するのではなく、スタックにデータを格納しようとしていました。私は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 関数が呼び出され、そのためにスペースを malloc する必要があります。
スタック配列にまだスペースがある場合は、int をスタック配列にコピーします。それ以外の場合は、ヒープに malloc します。20 と 16 を使用するのは、スタックに int を格納する場合、構造体の残りの 16 バイトのスペースを malloc する必要があるためです。それ以外の場合は、20 バイトのスペースを malloc します。
何らかの理由で、これを行うとセグメンテーション違反が発生します。誰かが私を正しい方向に向けることができれば幸いです。
ありがとう!