将malloc更改为新运算符

Kar*_*i13 4 c++ malloc new-operator

我正在将路径规划代码从C更改为C++.代码动态分配map中的状态.我不清楚它new和之间的区别malloc.以下代码片段出现错误.

typedef struct cell
{ 
   int x,y;
   struct cell *n[5];
}cell_t;

typedef struct pq
{
   cell_t **heap;
   int len,cap;
}pq_t;

//for C version
func(pq_t *pq,50)
{
   pq->heap = malloc(sizeof(cell)*50);
   pq->len = 0;
   pq->cap = 0;
}
//for C++ version
func(pq_t *pq,50)
{
   pq->heap = (cell_t*)::operator new(sizeof(cell_t)*50);
   pq->len = 0;
   pq->cap = 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

在分配时无法将' cell_t*{aka cell*}' 转换为' cell_t**{aka cell_s**}'

pq->heap =(cell_t*) ::operator new (sizeof(cell_t) * (50));""
Run Code Online (Sandbox Code Playgroud)

我需要改变什么?

Joh*_*nck 8

而不是这个:

pq->heap = (cell_t*)::operator new(sizeof(cell_t)*50);
Run Code Online (Sandbox Code Playgroud)

你要这个:

pq->heap = new cell_t[50];
Run Code Online (Sandbox Code Playgroud)

也就是说,很明显你发布的代码并不是真正的代码,因此可能会有一些额外的错误.也许用编译的真实代码更新你的问题.