0
我想创建一个使用getline从输入文件读取的程序。如何访问包含在结构中的数组的地址?
我已经创建了下面的结构
struct misc_struct {
char *buf;
FILE *some_input_file;
};
在我的主文件我创建了一个缓冲和多重并行线程。
char buf[1024];
FILE *some_input_file;
struct misc_struct *pthread_arguments;
...
pthread_arguments = (struct misc_struct *)malloc(sizeof(struct misc_struct));
pthread_arguments->buf = buf;
pthread_arguments->some_input_file = some_input_file;
pthread_create(&t1, NULL, start, (void *)pthread_arguments);
现在在我的启动功能:
void *start(void *args)
{
size_t len;
struct misc_struct *pthread_arguments = (struct misc_struct *)pthread_arguments;
getline(&args->buf,&len,args->some_input_file);
...
}
不幸的是我在这个函数getline()调用正在崩溃。我在访问args-> buf时没有问题,但是当我需要使用& args-> buf作为getline函数时,它会因为“未分配指针”而崩溃“
我该怎么做不同?谢谢!
感谢您的回复。这是有道理的,但我也有第二个pthread,我需要允许访问相同的缓冲区,所以我认为预先分配缓冲区是必要的? – Stephen
你想让线程共享缓冲区吗?这让我感到不寻常。但是,如果是这种情况,那么确保所有对getline()的调用都获得相同的char **参数。 –
非常感谢您的帮助! – Stephen