我的代码遇到了非常奇怪的行为,代码的基本流程是
main ()
解析一个文件并相应地设置全局变量..比如
int frame_size, version;
typedef struct//file parsing variables
{
int frame,
int version; } configuration;
***//the function init_parse calls***
static int handler(void* user, const char* section, const char* name,
const char* value)
{
configuration* pconfig = (configuration*)user;
#define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0
if (MATCH("protocol", "version")) {
pconfig->version = atoi(value);
}
else if (MATCH("basic", "frames")) {
pconfig->frames= atoi(value);
frame_size=pconfig->frames;
}
else {
return 0; /* unknown section/name, error */
}
return 1;
}
main (){
configuration config;
if (ini_parse("test.ini", handler, &config) < 0) {
printf("Can't load 'test.ini'\n");
getchar();
iret = pthread_create(&hThread,NULL, pcapreader, NULL);
if(iret)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret);
exit(EXIT_FAILURE);
}
}
现在,main()
的解析行之后的行,一切似乎都已设置,但是一旦线程启动,值 frame_size 就会变为 6345720:/
我已经为可能的复制变量仔细检查了代码。线程仅在 for 循环中使用 frame_size
来检查限制。
最佳答案
唯一的问题是初始化,一旦初始化,一切都很顺利:)
关于c - 线程变化的开始已经设置了全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641827/