我在使用包含其他结构
的结构传递参数时遇到问题我知道我使用这些结构的方式有问题,但我不知道在哪里......
谢谢!
这是我的结构
typedef struct {
IMAGE *imagenfte;
IMAGE *imagendst;
}thread_data;
//thread_data *data = (thread_data *) malloc(sizeof(thread_data));
这是其他结构
typedef struct {
HEADER header;
INFOHEADER infoheader;
PIXEL *pixel;
} IMAGE;
IMAGE imagenfte,imagendst;
这是我的线程功能
void *processBMP2(void *argumentos)
{
thread_data *my_data;
my_data = (thread_data *) (argumentos);
IMAGE *imagefte, *imagedst;
imagefte = my_data->imagenfte;
imagedst = my_data->imagendst;
free(my_data);
int i,j;
int count=0;
PIXEL *pfte,*pdst;
PIXEL *v0,*v1,*v2,*v3,*v4,*v5,*v6,*v7;
int imageRows,imageCols;
memcpy(imagedst,imagefte,sizeof(IMAGE)-sizeof(PIXEL *));
imageRows = imagefte->infoheader.rows;
imageCols = imagefte->infoheader.cols;
imagedst->pixel=(PIXEL *)malloc(sizeof(PIXEL)*imageRows*imageCols);
...
这就是我创建线程和传递de参数的方式
pthread_t hilo;
thread_data *my_data = (thread_data *) malloc(sizeof(thread_data));
my_data->imagenfte = &imagenfte;
my_data->imagendst = &imagendst;
pthread_create(&hilo,NULL, processBMP2, my_data);
//processBMP(&imagenfte,&imagendst);
答案 0 :(得分:1)
你正在做的事情是完全正确的。新线程需要负责释放内存,因为父线程无法知道新线程何时完成访问它。