q.push()可以第一次成功地完成。但第二步就会出错。调试器(Eclipse)将打开new_allocator.h文件,并指向“// 402. some_分配器::construct”中错误的新表达式。
谢谢你的帮助。
代码很简单,如下所示:
struct argType{
char *name;
std::queue<char *> q;//each argType has a queue for round robin
} *argTypeDB;
int main() {
char *name = "na";
char *a = "122,3,4,5,32,,21;";
argTypeDB = (struct argType *)malloc(sizeof(struct argType));
argTypeDB[0].name = name;
for(int i = 0; i< 5; i++){
argTypeDB[0].q.push(a);
printf("%d\n", i);
}
free(argTypeDB);
}
发布于 2014-03-14 15:38:02
您正在使用malloc分配argTypeDB,而不是使用argType的构造函数。这是错误的,因为队列实际上不是构造的,它只有分配给它的空间。
argTypeDB = new argType();
...
delete argTypeDB;
https://stackoverflow.com/questions/22407998
复制相似问题