有没有在Python中获取堆内存块并使用变量引用它的方法,就像其他语言中的关键字“new”或函数
在这个项目中,我的程序在不确定的时间间隔内等待接收一些数据,并且当正确时,数据的长度是固定的字节数。
我通常这样使用它:
然而,我发现列表中的所有项目都相同,并且等于最新接收到的项目。很明显,所有列表项都指向同一个内存地址,我希望每次调用函数时都能获得一个新的内存地址。
malloc()
一样?Object *obj = (Object *) malloc(sizeof(Object));
Object *obj = new Object();
在这个项目中,我的程序在不确定的时间间隔内等待接收一些数据,并且当正确时,数据的长度是固定的字节数。
我通常这样使用它:
void receive()// callback
{
if(getSize()<=sizeof(DataStruct))
{
DataStruct *pData=malloc(sizeof(DataStruct));
if(recvData(pData)>0)
list_add(globalList,pData);
}
}
void worker()
{
init()
while(!isFinish)
{
dataProcess(globalList);
}
}
现在我想把这些旧项目迁移到Python上,并尝试以如下方式进行:
def reveive():
data=dataRecv()
globalList.append(data)
然而,我发现列表中的所有项目都相同,并且等于最新接收到的项目。很明显,所有列表项都指向同一个内存地址,我希望每次调用函数时都能获得一个新的内存地址。
dataRecv
的定义(或者调用的任何内容 - 最小可复现代码),那么实际问题可能会更清晰。我猜测你正在清空和重用单个列表对象,而不是创建一个新的列表对象。可能你遇到了可怕的可变默认参数问题。 - jonrsharpe