我正在尝试使用 Golang 的 win64api 库(https://github.com/kumako/go-win64api) 来控制 windows 防火墙。

它运行良好,但它不会释放内存。例如,循环运行函数会导致内存使用量不断增加。

看库,好像这个话题已经处理好了(firewallAPIRelease,firewallRulesEnumRealease之类的函数)。

有人知道为什么会这样吗?

这是导致问题的代码:

package main

import (
    "fmt"
    winapi "github.com/kumako/go-win64api"
    "time"
)

func main(){
    var first string
    for 1>0 {
        fmt.Scanln(&first)
        if first == "run"{
            firewallTest()
        }
    }
}

func firewallTest(){
    //get the list of the rules
    ruleList, _ := winapi.FirewallRulesGet()
    //delete them one by one using their names
    for _, eachRule := range ruleList {
        ruleName := eachRule.Name
        if ruleName != ""{
            winapi.FirewallRuleDelete(ruleName)
        }
    }
    //wait for 30 second
    time.Sleep(30 * time.Second)
    //add them back, one by one, from the list
    for _, eachRule := range ruleList{
        winapi.FirewallRuleAddAdvanced(eachRule)
    }
}