SDL2线程C ++指针损坏

时间:2015-07-16 14:58:17

标签: multithreading pointers sdl-2 heap-corruption

所以,我有以下问题可能看起来很奇怪或太初级。此代码段演示了我的问题。

#ifdef __cplusplus
    #include <cstdlib>
#else
    #include <stdlib.h>
#endif

#include "SDL2/SDL.h"
#include <iostream>
using namespace std;

int doSTH(void* data){

    int* data2 = (int*)data;
    cout << data2 << endl;

    return 0;
}

int main(){

    SDL_Init(SDL_INIT_EVERYTHING);
    int* data = new int(2);
    cout << data << endl;
    SDL_CreateThread(doSTH, "sth", (void*)data);
    SDL_Delay(1);
    delete data;
    SDL_Quit();
}

输出

0x2479f40
0x400c05

这意味着我以某种方式调用的函数没有得到我给它的指针,我错过了什么?

我正在使用Linux Ubuntu 14.04,g ++ 4.8和codeblocks。 请告诉我是否应该提供更多信息。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

没关系,不知何故,SDL2的构建被搞砸了。我刚刚卸载了libx11-dev,重新启动然后重新安装了libsdl2-dev,现在它可以正常工作。