我的方法是 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;
}
这对我来说很奇怪。我究竟做错了什么?