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