swig/python检测到类型为';uint32_t*';,未找到析构函数

swig/python检测到类型为';uint32_t*';,未找到析构函数,python,memory,memory-leaks,swig,Python,Memory,Memory Leaks,Swig,当我在结构中编辑或打印一个字段时,我得到了提到的关于内存泄漏的错误,但是如果我使用下面的xx这样的简单变量,就不会有内存泄漏。 为什么呢 文件rc_test.py: import sys import verbs_utils import logging logger = logging.basicConfig(level=logging.DEBUG) class rc_pingpong(): def __init__(self, link

当我在结构中编辑或打印一个字段时,我得到了提到的关于内存泄漏的错误,但是如果我使用下面的xx这样的简单变量,就不会有内存泄漏。 为什么呢

文件rc_test.py:

   import sys
    import verbs_utils
    import logging
    logger = logging.basicConfig(level=logging.DEBUG)

    class rc_pingpong():
        def __init__(self, link_partner_hostname=None):
            self.attr = verbs_utils.ibv_qp_attr()
            self.init_to_rts()

        def init_to_rts(self):
            self.attr = verbs_utils.ibv_qp_attr()
            logging.debug("<DEBUG: init_to_rts>, self.attr = {}".format(self.attr))
            logging.debug("<DEBUG: init_to_rts>, self.attr.path_mtu = {}".format(self.attr.path_mtu))
            logging.debug("<DEBUG: init_to_rts>, self.attr.min_rnr_timer = {}".format(self.attr.min_rnr_timer))
            logging.debug("<DEBUG: init_to_rts>, self.attr.qp_state = {}".format(self.attr.qp_state))
            logging.debug("<DEBUG: init_to_rts>, self.attr.port_num = {}".format(self.attr.port_num))

            xx = self.attr.dest_qp_num
            verbs_utils.set_intp_val(xx , 7)
            verbs_utils.print_intp_val(xx)
            self.attr.dest_qp_num = xx
            #logging.debug("<DEBUG: init_to_rts>, +++++++++ self.attr.dest_qp_num = {}".format(self.attr.dest_qp_num))
            verbs_utils.print_intp_val(self.attr.dest_qp_num)
            verbs_utils.print_intp_val(self.attr.dest_qp_num)
导入系统 导入动词 导入日志记录 logger=logging.basicConfig(级别=logging.DEBUG) 类rc_pingpong(): def uuu init uuu(self,link_partner_hostname=None): self.attr=verbs_utils.ibv_qp_attr() self.init_to_rts() def初始到rts(自): self.attr=verbs_utils.ibv_qp_attr() logging.debug(“,self.attr={}”.format(self.attr)) logging.debug(“,self.attr.path_mtu={}”.format(self.attr.path_mtu)) logging.debug(“,self.attr.min\u rnr\u timer={}”.format(self.attr.min\u rnr\u timer)) logging.debug(“,self.attr.qp_state={}”.format(self.attr.qp_state)) logging.debug(“,self.attr.port_num={}”.format(self.attr.port_num)) xx=self.attr.dest\u qp\u num 动词的用法。集合(xx,7) 动词\u utils.print\u intp\u val(xx) self.attr.dest\u qp\u num=xx #logging.debug(“,+self.attr.dest_qp_num={}”.format(self.attr.dest_qp_num)) 动词\u utils.print\u intp\val(self.attr.dest\u qp\num) 动词\u utils.print\u intp\val(self.attr.dest\u qp\num) 文件:verbs_utils.c

    struct ibv_qp_attr {
        uint32_t        qkey;
        uint32_t        rq_psn;
        uint32_t        sq_psn;
        uint32_t        dest_qp_num;
    };

   void set_intp_val(uint32_t* p, int val)
    {
        *p = val;
        printf("----------------------------------------------\n");
        printf("<DEBUG : xxxxxxset_intp_val>, p = %d\n", p);
        printf("<DEBUG : xxxxxxset_intp_val>, val = %d\n", val);
        printf("<DEBUG : xxxxxxset_intp_val>, *p = %d\n", *p);
        printf("----------------------------------------------\n");
    }
    void print_intp_val(uint32_t* p)
    {
        printf("----------------------------------------------\n");
        printf("<DEBUG : xxxxxxset_intp_val>, *p = %d\n", *p);
        printf("<DEBUG : xxxxxxset_intp_val>, p = %d\n", p);
        printf("----------------------------------------------\n");
    }
struct ibv\u qp\u attr{
uint32_t qkey;
uint32_t rq_psn;
uint32平方英尺;
uint32目的地数量;
};
无效集整数值(uint32整数值)
{
*p=val;
printf(“--------------------------------------------------------------\n”);
printf(“,p=%d\n”,p);
printf(,val=%d\n,val);
printf(“,*p=%d\n”,*p);
printf(“--------------------------------------------------------------\n”);
}
无效打印输入值(uint32\U t*p)
{
printf(“--------------------------------------------------------------\n”);
printf(“,*p=%d\n”,*p);
printf(“,p=%d\n”,p);
printf(“--------------------------------------------------------------\n”);
}
输出:

----------------------------------------------
<DEBUG : xxxxxxset_intp_val>, p = 8431360
<DEBUG : xxxxxxset_intp_val>, val = 7
<DEBUG : xxxxxxset_intp_val>, *p = 7
----------------------------------------------
----------------------------------------------
<DEBUG : xxxxxxset_intp_val>, *p = 7
<DEBUG : xxxxxxset_intp_val>, p = 8431360
----------------------------------------------
----------------------------------------------
<DEBUG : xxxxxxset_intp_val>, *p = 7
<DEBUG : xxxxxxset_intp_val>, p = 8967344
----------------------------------------------
swig/python detected a memory leak of type 'uint32_t *', no destructor found.
----------------------------------------------
<DEBUG : xxxxxxset_intp_val>, *p = 7
<DEBUG : xxxxxxset_intp_val>, p = 9753776
----------------------------------------------
swig/python detected a memory leak of type 'uint32_t *', no destructor found.
----------------------------------------------
,p=8431360
,val=7
,*p=7
----------------------------------------------
----------------------------------------------
,*p=7
,p=8431360
----------------------------------------------
----------------------------------------------
,*p=7
,p=8967344
----------------------------------------------
swig/python检测到类型为“uint32_t*”的内存泄漏,未找到析构函数。
----------------------------------------------
,*p=7
,p=9753776
----------------------------------------------
swig/python检测到类型为“uint32_t*”的内存泄漏,未找到析构函数。
尝试将
%包括“stdint.i”
添加到界面文件的顶部。

尝试将
%包括“stdint.i”
添加到界面文件的顶部