|
最近在学习线程
下面是一段代码,故意没有将thread初始化:
thread_error.cpp
--------------------------------------------------------
#include <pthread.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
pthread_t thread;
int status;
status = pthread_join(thread, NULL);
if (status != 0)
fprintf (stderr, "error %d: %s\n", status, strerror (status));
return status;
}
--------------------------------------------------------
奇怪的是,
如果用g++ -O2 -D_REENTRANT -lpthread thread_error.cpp 编译运行的结果是:
error 3: No such process
如果用g++ -O0 -D_REENTRANT -lpthread thread_error.cpp 编译运行的结果是:
段错误
为何启用优化选项-O2得到的结果比不优化得到的结果还优雅?
不优化,运行是被粗暴的意外终止
优化,能正常结束程序。
哪位能指点一下?多谢~~ |
|