python中有什么方法可以用来从堆中获取内存块,并可以使用变量来引用它。就像关键字“ new”或malloc()其他语言的函数一样:
Object *obj = (Object *) malloc(sizeof(Object));
Object *obj = new Object();
Run Code Online (Sandbox Code Playgroud)
在项目中,我的程序正在等待以不确定的时间间隔接收某些数据,并且在正确时具有一定的字节长度。
我习惯这样:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想将这些旧项目迁移到python,并尝试这样做:
def reveive():
data=dataRecv()
globalList.append(data)
Run Code Online (Sandbox Code Playgroud)
但是,我得到列表中的所有项目都是相同的,并且等于最新收到的项目。显而易见,所有列表项都指向相同的内存地址,并且我想为每个调用该函数的用户获取一个新的内存地址。