سؤال

لنفترض لدي البرمجية التالية:

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 متغير على المكدس بدلا من كومة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top