int p_entity(char **data){
char *pch;
pch = strtok(*data, " \n");
// printf("%s ", pch);
pch = strtok(NULL, " \n");
// (*data) = (*data) + 1; // 1. this is okay
// (*data) = pch; // 2. but doing this will cause an error
printf("%c %d \n", *pch, pch);
printf("%c %d \n", **data, *data);
}
从上面的代码中,如果取消注释 1,我将得到以下结果:
g 4927479
e 4927456
如果取消注释 2,我将得到以下内容:
g 4927479
g 4927479
3 [main] main 8172 exception::handle: Exception: STATUS_ACCESS_VIOLATION
470 [main] main 8172 open_stackdumpfile: Dumping stack trace to main.exe.stackdump
谁能解释一下为什么我会收到这个错误?我认为这两个分配都是合法的,并且递增(*数据)相当于直接分配我想要的地址。
最佳答案
似乎即使你收到错误(并取消注释 2),你仍然得到两个 printfs...似乎它在你的代码中很晚才崩溃。
关于c 双指针给出没有意义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576970/