常数:

#define MAX_OPCODE_NAME_LEN 4

我有一组结构:
OPCODE *mot[NUM_OPCODES];

结构定义:
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”),所以它不应该耗尽空间,我只是将字符串文本复制到静态内存位置。也许我错误地定义了结构,或者在错误的地方使用了指针箭头?

最佳答案

OPCODE *mot[NUM_OPCODES];

是指向OPCODE的指针数组。不是OPCODEs的数组。
必须为存储在mot中的每个指针分配操作码内存,或者(当前代码的简单方法)只需使mot成为OPCODEs的数组
OPCODE mot[NUM_OPCODES];
       ^^

并以
strcpy(mot[0].name, "hlt");
strcpy(mot[1].name, "add");  ....
             ^^

10-04 13:25