cpp类引用的c函数改变const变量和const变量指针

时间:2015-10-17 00:48:29

标签: c++ c pointers parameters extern

我的方法是 cppClass cppFunction cppFunction 调用c函数 cFunctionA ,后者又调用 cFunctionB

我遇到的问题是在退出 cFunctionB 之后 - 在调试器通过结束括号之后 - 以一些明显的随机方式  1.指针变量 parameter1 parameter2 设置为NULL  2. unsigned int变量 parameter1_size parameter2_size 设置为0.

这对我来说是一种非常奇怪的行为,特别是当您认为受影响的变量是 const输入参数时,两个函数 cFunctionA和cFunctionB。

此问题的每次出现一次只影响上述一些上述变量。

我不知道可能导致这个问题的原因,因此我尽可能多地包含了详细信息,甚至很难,我认为有些不相关。

请在下面找到我的代码:

cppFunction.h

    extern "C" {

    unsigned int cFunctionAconst (unsigned char* parameter1, const unsigned int parameter1_size, const unsigned char* parameter2, const unsigned int parameter2_size);

    unsigned int cFunctionB(const unsigned char* parameter1, const unsigned int parameter1_size, const unsigned char* parameter2, const unsigned int parameter2_size, const int parameter3, const int parameter4);

            }


#ifndef CPP_CLASS_H
#define CPP_CLASS_H

class cppClass : public QDialog
{

Q_OBJECT

public:
     explicit cppClass();

      //some other methods

      void cppFunction(string someParameter1, string someParameter2);

};

#endif

cppFunction.cpp     cppClass :: cppClass():QDialog的(){}

void cppClass::cppFunction(string someParameter1, string someParameter2)
{
    const unsigned char* parameter1;
    const unsigned char* parameter2;

    const unsigned int parameter1_size;
    const unsigned int parameter2_size;

    int functionAResult;


    //assign parameters parameter1, parameter1_size, parameter2, parameter2_size

    functionAResult=cFunctionA(parameter1, parameter1_size, parameter2, parameter2_size);
}

cFunctions.h

unsigned int cFunctionA(const unsigned char* parameter1, const unsigned int parameter1_size, const unsigned char* parameter2, const unsigned int parameter2_size)
{
    const int parameter3;
    const int parameter4;


    // do something;

    functionB(parameter1, parameter1_size, parameter2, parameter2_size, parameter3, parameter4);

    // do some other something;

}


unsigned int cFunctionB(const unsigned char* parameter1, const unsigned int parameter1_size, const unsigned char* parameter2, const unsigned int parameter2_size, const int parameter3, const int parameter3)
{

    // do something;

}

这对我来说很奇怪。我究竟做错了什么?

0 个答案:

没有答案