我的C++代码有问题,请看以下函数:
void insere(titem x){
tlista *aux;
aux = (tlista*)malloc(sizeof(tlista));
aux->item = x;
ultimo->prox = aux;
ultimo = ultimo->prox;
aux->prox = NULL;
}
当执行以下行:
aux->item = x;
时,Visual Studio会说:看看我的struct titem:
struct titem {
int prioridade;
string nome;
int freq;
};
在Dev-C++中,代码可以正常工作!什么情况下会出现问题,我该如何解决?
最佳答案
您正在使用malloc
为对象分配内存。这将分配内存,但不会初始化对象。对于非POD成员,这是一个问题,例如aux->item.nome
。
代替使用malloc,您需要使用new
。
tlista *aux = new tlista;
完成该结构后,请使用
delete
对其进行处理。delete aux;
由于您使用的是C++,因此应该忘掉
malloc
和free
的所有知识。堆分配在C++中使用new
和delete
执行。关于c++ - Visual Studio 2010上的访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15118135/