我的问题是我有一个程序在Windows上完美运行,而在Dev机器上它给出了我的程序没有任何输出的分段错误。为了测试它,我把一个printf()放在main的开头,在任何代码片之前并且在没有打印任何内容的情况下仍然会出现分段故障。
_ptrcpy_sse2()中的#0 0x00007f374105adc0来自/lib64/libc.so.6
我只能通过粗线来理解线路。我不想用我的整个代码膨胀页面。所以,如果你能给我一个方向或询问特定的线路,我会在这里准备好。
编辑:添加了有意义的回溯,删除了一些mumbo jumbo。 我调查了一些调试并达到了这些信息;
来自/lib64/libc.so.6的__strcpy_sse2()中的0 0x00007f6da93f2dc0
read_customer_info()中的1 0x00000000004017e5 read_customers()
中的2 0x0000000000401756
3 0x0000000000401289 in operate()
主页()中的4 0x0000000000401a64
最里面的函数中的代码片段;
char *name;
name = (char*)malloc(15*sizeof(char));
int transaction_amount;
int transaction_time;
coming_minute=atoi(strtok(temp_line,",\0"));
strcpy(name,strtok(NULL,",\0"));
我可以看到使用strtok作为strcpy的参数可能导致这个段错误。我应该使用临时字符指针而不是直接使用strtok()返回值中的一个吗?