[英]Segmentation fault: 11 when trying to perform char[] lookup in C
char getType()
{
typedef struct typelookup { const char *opcodebits; char instype; } typelookup;
typelookup table[] = {
{"000000",'r'},
{"000010",'j'},
{"000011",'j'},
{ NULL }
};
for (typelookup *t = table; t->opcodebits != NULL; ++t) {
if (strcmp(t->opcodebits, opcode) == 0) {
return t->instype;
}
}
return 'i';
}
我需要能够基于字符串执行查找。 该字符串包含在静态数组中,如果该字符串在查找表中,我希望能够返回一个字符,该字符将定义二进制所引用的MIPS指令类型,因此将r,j和i作为返回值。 这段代码可以编译,但是在运行代码时,我总是会收到“分段错误:11”。 有人能启发我做错什么吗? 试图修复该错误的时间超出了我的认可。
什么是opcode
? opcode
指向的char数组是否包含终止的零? 否则, strcmp
可能会继续比较t->opcodebits
,超出范围,并突然命中不可读的虚拟地址。
很抱歉,我的回答听起来像是很多其他问题。 :-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.