c++ - 在 C 中写入 C++ 指针

标签 c++ c malloc

我正在使用 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++ 调用 mallocfree 是完全可以的。只需确保不要将对这些函数的调用与 newdelete 运算符混淆。

关于c++ - 在 C 中写入 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22930748/

相关文章:

c++ - 如何查找当前系统时区

c - 错误./thrash : free(): invalid pointer

c - C语言数组计算时如何打印带符号的结果

html - 如何在 C 中查找所有出现的子字符串

c - 如何替换newlib的malloc

c++ - 从 C++ 到 Haskell 类和状态

c++ - 使用 OpenGL 函数的非常基本的体绘制(用于教学目的)

c - 如何区分 malloced 字符串和字符串文字?

c++ - 在 vector 中存储基于 CRTP 的类时遇到问题

c - 为什么这个 C 程序不会崩溃?