سوف pthread_detach إدارة الذاكرة بالنسبة لي ؟
-
02-07-2019 - |
سؤال
لنفترض لدي البرمجية التالية:
while(TRUE) {
pthread_t *thread = (pthread_t *) malloc(sizeof(pthread_t));
pthread_create(thread, NULL, someFunction, someArgument);
pthread_detach(*thread);
sleep(10);
}
سوف منفصل موضوع تحرير الذاكرة المخصصة من قبل malloc أو أن شيئا ما لدي الآن أن تفعل ؟
المحلول
لا. pthread_create() لا يوجد لديه وسيلة لمعرفة أن الموضوع مؤشر تمريرها إلى أنه تم تخصيص حيوي.pthreads لا تستخدم هذه القيمة داخليا ؛ ببساطة إرجاع موضوع جديد معرف المتصل.أنت لا تحتاج إلى تخصيص حيوي أن القيمة ؛ يمكنك تمرير عنوان متغير محلي بدلا من ذلك:
pthread_t thread;
pthread_create(&thread, NULL, someFunction, someArgument);
نصائح أخرى
تحتاج إلى تحرير الذاكرة نفسك.سيكون من الأفضل ببساطة تخصيص pthread_t متغير على المكدس بدلا من كومة.
لا تنتمي إلى StackOverflow