首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除从线程原因返回的指针;分段错误: 11

删除从线程原因返回的指针;分段错误: 11
EN

Stack Overflow用户
提问于 2016-10-14 09:53:09
回答 1查看 129关注 0票数 0

我对c++和使用指针进行编程非常陌生。我试图向线程传递一个参数,将一个参数添加到线程中,然后返回指向该结果的指针。主线程应该只打印返回指针指向的结果。

代码语言:javascript
复制
#include<stdio.h>
#include<pthread.h>
#include<iostream>

using namespace std;

void* calculator(void* _n) {
    int* n = (int*) _n;
    int* i;
    int result = *n + 1;
    i = &result;

    return i;
}

int main(){
    int input;
    pthread_t calcThread;
    void* exitStatus;
    int* threadResult;

    cout << "Input integer: " << endl;
    cin >> input;
    cout << "Init thread..." << endl;

    pthread_create(&calcThread, NULL, calculator, &input);
    pthread_join(calcThread, &exitStatus);

    // Error around here? 
    threadResult = (int*) exitStatus;
    cout << "Returned: " << *threadResult << endl;
}

代码会编译,但执行时会出现分段错误。我猜这和我所做的演员有关,但我想不出是什么。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-14 09:56:41

代码语言:javascript
复制
i = &result;

返回指向局部变量的指针。一旦超出范围,访问它就会产生未定义的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40040206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档