Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数体中的值与传入的值不同_C++_Multithreading_Visual Studio_Visual Studio 2017_Multiprocessing - Fatal编程技术网

C++ 函数体中的值与传入的值不同

C++ 函数体中的值与传入的值不同,c++,multithreading,visual-studio,visual-studio-2017,multiprocessing,C++,Multithreading,Visual Studio,Visual Studio 2017,Multiprocessing,我在一个大型程序中注意到如下这些调用序列:(调用堆栈的相反顺序) //调用步骤1 std::vector fieldNames=this->getUniqueMangledFieldNames(sigHierInfo);//字段名有“a”和“b” //调用步骤2 std::vector SlFileIOBlockContext::getUniqueMangledFieldNames( const SlSigHierInfo*const sigHierInfo )常数 { std::向量字段名(2

我在一个大型程序中注意到如下这些调用序列:(调用堆栈的相反顺序)

//调用步骤1
std::vector fieldNames=this->getUniqueMangledFieldNames(sigHierInfo);//字段名有“a”和“b”
//调用步骤2
std::vector SlFileIOBlockContext::getUniqueMangledFieldNames(
const SlSigHierInfo*const sigHierInfo
)常数
{
std::向量字段名(2);
字段名[0]=“名称”;
字段名[1]=“元素”
slu::MLStructFieldNameUtil::getUniqueMangledNames(字段名,“信号”);
返回字段名;
}
//调用步骤3
void MLStructFieldNameUtil::getUniqueMangledNames(标准::向量和名称,
const std::string和deffprefix)
{

对于(尺寸=0;idx@MauriceRandomNumber我认为将字符串作为引用不应改变内容。@MauriceRandomNumber-引用向量是不合法的。因此,是的,改变它会产生影响,但不是一种好的方式。我明白了,忘了这一点,删除了注释。如果您怀疑某个内容像未完成的调用,请释放并删除它ebug版本的输出不同?@MauriceRandomNumber谢谢,实际上,这是一个偶发的失败。我运行了300次,只得到一个实例有这种奇怪的值。似乎这与数据库有关?
// call step 1
std::vector<std::string> fieldNames = this->getUniqueMangledFieldNames(sigHierInfo); // fieldNames have "a"  and "b"

// call step 2
std::vector<std::string> SlFileIOBlockContext::getUniqueMangledFieldNames(
    const SlSigHierInfo *const sigHierInfo
    ) const
{
    std::vector<std::string> fieldNames(2);
    fieldNames[0] = "name";
    fieldNames[1] = "elements"
    slu::MLStructFieldNameUtil::getUniqueMangledNames(fieldNames, "signal");
    return fieldNames;
}

//call step 3
void MLStructFieldNameUtil::getUniqueMangledNames(std::vector<std::string> & names, 
                                                  const std::string & defPrefix)
{
    for(size_t idx=0; idx<numNames; ++idx) {
        //Mangle the name
        MLStructFieldNameUtil::mangleFieldName(names[idx], defPrefix);
      }
    ...
}