我的内存搜索器函数用于在内存中定位字符串“initial”的出现。
volatile unsigned char* ptr;
size_t offset_address;
static char nm [8], idx;
for(ptr = ((volatile unsigned char* )&offset_address); idx <= sizeof("initial") - 1; ptr++)
{
if(*ptr == *("initial" + idx))
*(nm + idx) = *ptr, idx++;
else idx = 0;
}
导致“if(*ptr == *("initial"+ idx))
访问超出授权内存区域的读取错误”有什么问题? (即使我只增加一次指针也会出错,但如果我根本不增加指针,则不会发生错误)
最佳答案
for
循环中可能存在无限循环,然后 ptr
不断增长。最后,尝试通过 *ptr
引用它会导致错误。
for(ptr = /*...*/; idx <= sizeof("initial") - 1; ptr++) <-- infinite loop if idx=0
{
if(*ptr == *("initial" + idx))
*(nm + idx) = *ptr, idx++;
else idx = 0; <-- always goes here if no matching
}
关于c - 内存搜索器功能中毫无根据的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31846629/