繁体   English   中英

分段错误:尝试在C中执行char []查找时出现11

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM