構造体にメモリを自動的に割り当て、その構造体内のフィールドをゼロに設定するプログラムを作成しました。
そのメンバーだけをゼロに設定するのではなく、ブロック全体をゼロにしてみませんか? 入ってきmemset()
ます。
この関数を使用した後、私のプログラムは機能しなくなりました。そのメモリ ブロックに含まれる構造内のフィールドに値を代入しようとすると、セグメンテーション違反エラーでプログラムがクラッシュしました。
それで、これは私を不思議に導きます-メモリのブロックがmalloc()
/ AUTOを介して割り当てられるとき、このスペースにアクセスして使用するために必要な他の情報がこの場所に保存されていますか?
typedef struct{
NodeT *nodes[MAX_SIZE];
int count;
} stackT;
stackT stack;
stackT* ptr = &stack;
void init(stackT* stackPtr){
//stackPtr->count = 0;
memset(stackPtr, 0, sizeof(stackptr));
}