2

常数:

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

4

1 回答 1

4
OPCODE *mot[NUM_OPCODES];

指向 的指针数组OPCODE。不是s的数组OPCODE

OPCODE您必须为存储在 mot 中的每个指针分配 OPCODE 内存,或者(对于当前代码更简单的方法)只需将 mot 设为s数组

OPCODE mot[NUM_OPCODES];
       ^^

并访问这些值

strcpy(mot[0].name, "hlt");
strcpy(mot[1].name, "add");  ....
             ^^
于 2013-04-08T20:58:14.257 回答