문자열을 입력으로하여 멀티 스레딩 프로그램을 만들려고합니다. SDL_CreateThread
를 사용하여, 그래서 같은 간단한 구현을 구축하려고 시도 :문자열 매개 변수를 사용하여 SDL_thread 만들기
#include <stdio.h>
#include <string>
#include <SDL_thread.h>
int threadFunction(void* data) {
std::string* parameter = static_cast<std::string *>(data);
printf("Thread data: %s\n", parameter);
return 0;
}
int main(int argc, char const *argv[]) {
SDL_Thread* threadID = SDL_CreateThread(threadFunction, "test", (void*)"Enter string here");
SDL_DetachThread(threadID);
return 0;
}
그것은 완벽하게 잘 작동을하지만 난 문자열로 정수를 넣을 때마다 (예 : "123"
은 직접적으로 숫자 123
) 다음과 구문 분석을 시도 스레드의 정수는 Segmentation Fault: 11
입니다. 내 시도는 int i = std::stoi(parameter->c_str());
이유를 설명 할 수 있습니까? void*
에서 전송해야합니까?
고마워요 ... 나는 실수로 'std :: string'을 사용해야하는 문자열이기 때문에 생각했습니다. –