【发布时间】:2013-06-12 17:51:47
【问题描述】:
我有一个关于线程和进程的内存地址的问题。问题是:- 在正常通话中像
int func(int a, int b){
int c;
c = a + b;
return c;
}
int main(){
int ret = func(a,b);
return 0;
}
在上面对函数 func 的函数调用中,函数变量 a 和 b 将被存储在堆栈中。如果我错了,请纠正我。
现在另一种情况是当我们从主进程创建线程时。
void * func(void *dummy_ptr){
int c;
c = a + b;
pthread_exit();
}
int main(){
pthread_t id;
int ret = pthread_create(&id, NULL, & func(), NULL);
return 0;
}
我的问题是 pthread_create 的变量将存储在哪里。它是存储在主堆栈还是线程堆栈上。
【问题讨论】:
-
您的示例无法编译,因为您错过了声明
a和b。