小编lb *_* lb的帖子

如何在Python中动态分配内存

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)

但是,我得到列表中的所有项目都是相同的,并且等于最新收到的项目。显而易见,所有列表项都指向相同的内存地址,并且我想为每个调用该函数的用户获取一个新的内存地址。

python memory heap

5
推荐指数
2
解决办法
2万
查看次数

标签 统计

heap ×1

memory ×1

python ×1