Always(CORRECTLY)为C中定义的函数指定argtypes和restype,否则(C89样式)它们将默认为int(32bit),生成!!!未定义的行为!!!在64位,它可能会导致截断(这正是您正在经历的).
下面是您的代码的改编版本.
detector.cpp:
#include
#include
#include
#define C_TAG "From C"
#define PRINT_MSG_2SP(ARG0, ARG1) printf("%s - [%s] (%d) - [%s]: %s: 0x%0p
", C_TAG, __FILE__, __LINE__, __FUNCTION__, ARG0, ARG1)
using std::endl;
std::ofstream outFile;
class Detector {
public:
Detector();
void process(int *pIn, int *pOut, int n);
private:
int m_var;
};
Detector::Detector()
: m_var(0) {
outFile.open("addr_debug.txt");
outFile << "m_var init address: " << &m_var << endl;
PRINT_MSG_2SP("&m_var", &m_var);
}
void Detector::process(int *pIn, int *