C++ pthread_创建缓冲区大小。还不够?

C++ pthread_创建缓冲区大小。还不够?,c++,pthreads,buffer,C++,Pthreads,Buffer,我正在尝试使用pthread\u create函数创建线程。电话是这样的: respthread\u创建(&threadID,&atributte,函数,参数) res值始终为0,这意味着pthread\u create将正确启动线程。 我认为问题在于最后一个参数(参数)。这是一个太长的字符串,我认为这会使我的程序崩溃,因为如果我尝试使用一个较短的字符串,它就完全正确并且结束正确 我想知道pthread\u create是否创建了一个具有一定内存量的线程,你们是否知道这个内存量 PD:我的日志没

我正在尝试使用
pthread\u create
函数创建线程。电话是这样的:
respthread\u创建(&threadID,&atributte,函数,参数)

res
值始终为
0
,这意味着pthread\u create将正确启动线程。 我认为问题在于最后一个参数(参数)。这是一个太长的字符串,我认为这会使我的程序崩溃,因为如果我尝试使用一个较短的字符串,它就完全正确并且结束正确

我想知道
pthread\u create
是否创建了一个具有一定内存量的线程,你们是否知道这个内存量

PD:我的日志没有显示任何内容,我在
函数的第一行放了一个
cout
,但从未被读取,因为我的程序在它发生之前就崩溃了

谢谢大家!

编辑:代码的其余部分,如何创建线程

    void znkModulePlugin::createMainProcess(void* mod){
znkModulePlugin* module = static_cast<znkModulePlugin*>(mod);
try{
    int res = 0;
    pthread_attr_t attr;
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    res = pthread_create(&threadID, &attr, znkModulePlugin::launchThread, module); 
}catch(exception e){
    stringstream log_msg;
    log_msg << " CRIT znkModulePlugin::createMainProcess() -> Critical Error: " << e.what() << ". Reseting Node.";
    logData(log_msg.str());
}
void znkModulePlugin::createMainProcess(void*mod){
znkModulePlugin*模块=静态转换(mod);
试一试{
int res=0;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread\u attr\u setdetachstate(&attr,pthread\u CREATE\u distached);
res=pthread_create(&threadID,&attr,znkModulePlugin::launchThread,module);
}捕获(例外e){
stringstream log_msg;

log_msg遵循此模式以避免出现问题:

1) 分配一个包含新线程所需信息的
new
对象/结构

2) 调用
pthread\u create
向其传递指向新对象的指针

3) 当线程访问完信息后,
delete
object/struct


如果向线程传递指向某个对象的指针,则必须确保该指针保持有效(除非同步,否则其内容不会修改)直到新线程完成它。

你是否确保
参数
指向的字符串在线程访问它之前没有被破坏?
pthread\u create
不会为它自己分配内存;它只传递你给它的指针。你如何创建
参数
?@MikeSeymour,你应该给出答案-最有可能是这种情况。是的,我可以在启动
pthread\u create
之前键入该字符串,并且该字符串已完成!如果该字符串在我调用它之前被破坏,则我的较短字符串将发生这种情况。@Urien:说真的,发布更多代码。演示如何创建
参数