sinojelly / mockcpp

Two C/C++ testing tools, mockcpp and testngpp.
Apache License 2.0
66 stars 39 forks source link

outBoundP 该怎么使用呢?大神们帮忙看看吧~! #26

Closed Osborn2015 closed 3 years ago

Osborn2015 commented 3 years ago

最近项目中用到mockcpp当需要调用带有输出指针参数的函数时遇到问题,代码如下 ;

void function(int32_t *val) { } int32_t expect = 10; int32_t bb = (int32_t)malloc(sizeof(int32_t)); MOCKER(function).stubs().with(outBoundP(&expect, sizeof(expect))); function(bb); EXPECT_EQ(*bb, 10); 这里会在调用function时报错误 0xC0000005: 读取位置 0x0000000000007FF7 时发生访问冲突。 不知道这里到底怎么使用? 环境windos10 +visual studio 2017 +mockcpp 2.6

sinojelly commented 3 years ago

你的写法是对的。我在 Linux + GCC 8.4.0 上运行OK。

你说的这个情况,是不是所有C函数mock,都会报告这个错误?无论什么函数都是这样,与outBoundP无关。 因为看起来这可能是新版本的 VS 对代码段进行了保护,而mockcpp需要修改代码段函数最前面几个字节,跳转到mock函数。

相关用法可参见: https://github.com/sinojelly/mockcpp/blob/master/docs/SimpleUserInstruction_zh.md

Osborn2015 commented 3 years ago

你的写法是对的。我在 Linux + GCC 8.4.0 上运行OK。

你说的这个情况,是不是所有C函数mock,都会报告这个错误?无论什么函数都是这样,与outBoundP无关。 因为看起来这可能是新版本的 VS 对代码段进行了保护,而mockcpp需要修改代码段函数最前面几个字节,跳转到mock函数。

相关用法可参见: https://github.com/sinojelly/mockcpp/blob/master/docs/SimpleUserInstruction_zh.md

兄弟,谢谢啦,今天早上试了一下好了,然后我对比了一下昨天的代码也没有发现什么不同。真的是莫名其妙好了。

sinojelly commented 3 years ago

好的,那看起来 VS2017使用是没有问题的。