Go语言免费分配的C结构数组的内存

问题描述

我正在寻找一种释放Go中分配的c结构的内存的方法。我试图使用C.free释放内存,但是它抛出了curl --max-time 900 --location --request GET "https://XXXXXX/YYYYY?taskName=AssertTag_Task&projectName=POC" --header "Content-Type: application/json" --header "Authorization: Basic a2FydGhpa2E3ODk6MmQ0dWI0OTNGM0VTM3BtdXpxUl123456FOd3ph" 错误

malloc: *** error for object 0xc00024dfb0: pointer being freed was not allocated

package main /* #include "stdlib.h" #include "stdint.h" #include "stdio.h" typedef struct FileInfo{ char *Name; char *Path; }FileInfo; typedef struct Result{ FileInfo **files; }Result; */ import "C" import ( "unsafe" ) func GetValue() { var aiList []*C.struct_FileInfo aif := &C.struct_FileInfo{} aif = (*C.struct_FileInfo)(C.malloc(C.size_t(unsafe.Sizeof(C.struct_FileInfo{})))) aif.Name = C.CString("abcd") aif.Path = C.CString("/path") aiList = append(aiList,aif) air := &C.struct_Result{} air = (*C.struct_Result)(C.malloc(C.size_t(unsafe.Sizeof(C.struct_Result{})))) air.files = &aiList[0] pTraddr := *((*C.int64_t)(unsafe.Pointer(&air))) exportToFFI(pTraddr) } func FreeMemory(pointer *int64,totalFiles int64){ air := (*C.struct_Result)(unsafe.Pointer(pointer)) files := (*[1 << 30]C.struct_FileInfo)(unsafe.Pointer(*air.files))[:totalFiles] for _,item := range files { C.free(unsafe.Pointer(&item.Name)) C.free(unsafe.Pointer(&item.Path)) C.free(unsafe.Pointer(&item)) } } 方法将把指针导出到FFI方法,并且在捕获值之后,程序将尝试清除C.malloc分配的内存。 GetValue方法接受一个指针和所分配数组的长度。

我该如何解决

任何建议将不胜感激。 干杯。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)