我正在使用 CppUTEST 来测试一些 C 代码。
我在 C 中有一个函数 foo(int *bar)
,它 malloc
存储一些内存,写入内存并返回 C++ 代码。但是,当函数返回到C++代码时,该指针仍然是空指针。
这基本上就是我想做的
bar() {
int *result=0;
foo(result);
cout << *(result+1) << endl;
}
foo(int *bar) {
bar=(int *)malloc(sizeof(int)*4);
*(bar+1)=2;
*(bar+2)=5;
return 2;
}
它是双向的,当我在 C++ 中分配内存并传递我写入的指针时,我只是得到垃圾。
我的印象是堆分配的内存可以从任何地方写入/读取。
最佳答案
让你的函数foo
返回你分配的内存块:
int *foo() {
int *bar=(int *)malloc(sizeof(int)*4);
*(bar+1)=2;
*(bar+2)=5;
return bar;
}
然后使用返回的值进行测试。不要忘记释放您使用的内存。
void bar() {
int *result=foo();
cout << *(result+1) << endl;
free(result);
}
从 C++ 调用 malloc
和 free
是完全可以的。只需确保不要将对这些函数的调用与 new
和 delete
运算符混淆。
关于c++ - 在 C 中写入 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22930748/