- 論壇徽章:
- 2
|
主進(jìn)程的某一個(gè)函數(shù)會(huì)接收很多參數(shù),它把這些參數(shù)組成一個(gè)結(jié)構(gòu)體,然后啟動(dòng)一個(gè)線程并把結(jié)構(gòu)體地址傳給線程的啟動(dòng)函數(shù)。接著線程去做一下處理(很長(zhǎng)時(shí)間),而調(diào)用函數(shù)會(huì)返回。我想問(wèn)得是,當(dāng)調(diào)用函數(shù)返回是,參數(shù)結(jié)構(gòu)體不就應(yīng)該釋放了嗎?線程這時(shí)候用的參數(shù)結(jié)構(gòu)體是不是就成為了野指針?
例子如下:- void * fun2(void * arg){
- //實(shí)現(xiàn)略,需要很從時(shí)間處理
- }
- int fun1(char *arg1,char *arg2,...(很多參數(shù))){
- struct arg_t *a = NULL;
- a->arg1 = arg1;
- ...
- //參數(shù)都賦值到結(jié)構(gòu)體中
- pthread_t tid;
- pthread_create(&tid, NULL, fun2, (void *)a);
- return 0;
- }
復(fù)制代碼 請(qǐng)問(wèn),當(dāng)fun1退出的時(shí)候,結(jié)構(gòu)體a是不是就成了野指針了?這個(gè)時(shí)候,fun2使用參數(shù)的時(shí)候會(huì)有風(fēng)險(xiǎn)嗎?謝謝各位! |
|