gpt4 book ai didi

c++ - 在go中删除内存

转载 作者:IT王子 更新时间:2023-10-29 02:05:42 25 4
gpt4 key购买 nike

我正在使用我在 go 代码中访问的 new 在 C++ 中分配内存。有没有办法在go代码中删除这段内存。

这是我的代码流程:

func f_Go(){

f_C(&buf);//c function
buff := C.GoBytes(unsafe.Pointer(buf), size) //after accessing buf we have to delete buf for avoiding memory leak
}

void f_C(char *buf){

f_C++(&buf);//c++ function
}

void f_C++(char **buf){ //here using new I am allocating memory

*buf = new[20];
memcpy(*buf, "hhhhhhjdfkwejfkjkdj", 20);//cpy content into *buf

}

像这样使用我可以在 go 中访问 buf 但稍后我们必须删除此内存。所以我的问题是删除这段内存的方法是什么。

最佳答案

您可以导出执行释放的第二个函数。在你的 C++ 文件中应该做这样的事情:

extern "C" {
void create_buf(char **buf) {
*buf = new char[20];
...
}

void free_buf(char **buf) {
delete[] *buf;
*buf = nullptr;
}
}

现在您可以使用 CGo 调用另一个函数来执行清理。

关于c++ - 在go中删除内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com