常量:
#define MAX_OPCODE_NAME_LEN 4
我有一系列结构:
OPCODE *mot[NUM_OPCODES];
结构def:
typedef struct opcode {
char name[MAX_OPCODE_NAME_LEN + 1];
char format;
int type;
} OPCODE;
在我的代码中:
strcpy(mot[0]->name, "hlt");
strcpy(mot[1]->name, "add");
strcpy(mot[2]->name, "sub"); // seg fault on this command
strcpy(mot[3]->name, "mul");
// ...more code follows
我的代码在这里给了我一个分段错误,我不知道为什么,因为它应该有足够的空间容纳5个字符(4个字符后跟'\ 0'),所以它不应该用完空间,我只是将字符串文字复制到静态内存位置。也许我错误地定义了结构或在错误的位置使用了指针箭头?
答案 0 :(得分:4)
OPCODE *mot[NUM_OPCODES];
是指向OPCODE
的指针数组。不是{strong>数组OPCODE
s 。
你要么为每个存储在mot中的指针分配OPCODE内存,要么(对于当前代码更简单的方法)只需要为OPCODE
s
OPCODE mot[NUM_OPCODES];
^^
并以
的形式访问这些值strcpy(mot[0].name, "hlt");
strcpy(mot[1].name, "add"); ....
^^