निम्नलिखित प्रोग्राम में मैंने pthread_t
थ्रेड 1 बनाया जो फ़ंक्शन func()
में क्रैश हुआ। मुझे कमांड main()
में वास्तव में क्या हुआ, इसमें दिलचस्पी है।क्या होता है जब बच्चे थ्रेड क्रैश और मुख्य प्रतीक्षा में शामिल होने के लिए?
मैं प्रोग्राम के नीचे भाग गया और "पूर्ण" प्रिंट करके सामान्य रूप से बाहर निकल गया। मुझे नहीं पता क्यों?
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <cstring>
#include <climits>
#include <cstdio>
#include<pthread.h>
#include <stdlib.h>
using namespace std;
void* func(void *data)
{
cout<<"Calling func"<<(long)(data)<<endl;
int *a;
cout<<a[2]<<endl;
pthread_exit(0);
}
int main()
{
pthread_t thread1;
pthread_create(&thread1, 0 , &func, (void*)2);
pthread_join(thread1, NULL);
cout<<"complete"<<endl;
}
आपने अपरिभाषित व्यवहार का आह्वान किया। आप भाग्यशाली थे (कार्यक्रम) कार्यक्रम जारी रहा और ऐसा लगता है जैसे सभी ब्रह्मांड में सही थे। इस प्रकार यूबी की प्रकृति। – WhozCraig
@WhozCraig वहां कौन सा हिस्सा "अपरिभाषित" है? – GhostCat
@GostCat एक अनिश्चित सूचक को संदर्भित करता है, एक के लिए। – WhozCraig