C++ &引用;分段故障“;当我在主楼打电话时
当我想从main访问lista->arch->C++ &引用;分段故障“;当我在主楼打电话时,c++,list,function,segmentation-fault,call,C++,List,Function,Segmentation Fault,Call,当我想从main访问lista->arch->nombreArchivo中的数据时,我对这段特定的代码有问题。程序崩溃了,当我调试它时,我发现问题是“分段错误”——一种错误。我想我缺少分配,但我不知道在哪里 注意:我想做的是为struct\u archivo创建一个列表(listarchivo),因此可能错误在函数insertarachivolistarchivos()中 下面是main()代码: 以下是listaArchivos标题: struct _listaArchivos{ //defi
nombreArchivo
中的数据时,我对这段特定的代码有问题。程序崩溃了,当我调试它时,我发现问题是“分段错误”——一种错误。我想我缺少分配,但我不知道在哪里
注意:我想做的是为struct\u archivo
创建一个列表(listarchivo),因此可能错误在函数insertarachivolistarchivos()
中
下面是main()代码:
以下是listaArchivos标题:
struct _listaArchivos{ //defino la estructura _listaArchivos, que sera una lista de nodos de tipo Archivo, definidos en el header Archivo.h
Archivo arch;
};
typedef _listaArchivos* ListaArchivos;
/*
* Crea, inicializa y retorna una nueva lista de archivos.
*/
ListaArchivos crearListaArchivos(){
ListaArchivos lista = new _listaArchivos;
lista->arch=NULL;
return lista;
}
/*
* Inserta el archivo 'archivo' en la lista 'lista'.
*/
void insertarArchivoListaArchivos(ListaArchivos &lista, Archivo archivo){
ListaArchivos cabezal;
if (lista==NULL){
lista->arch=archivo;
lista->arch->Anterior=NULL;
lista->arch->Siguiente=NULL;
}
else{
cabezal=lista;
while (!cabezal->arch->Siguiente)
cabezal->arch=cabezal->arch->Siguiente;
cabezal->arch->Siguiente=archivo;
archivo->Siguiente=NULL;
archivo->Anterior=cabezal->arch->Siguiente;
}
}
我能做什么?同时,我将继续阅读有关指针/列表的内容,并尝试找出答案。以下是我发现的可能导致您的问题的一些问题: 使用字符串时,字符0、“0”和数字0之间存在差异。您需要将数字的文本表示形式转换为内部表示形式
既然你把问题标记为C++,我建议你使用<代码> STD::String 和<代码>查找< /Cult>方法,而不是C函数<代码> Strtok> < /C>。在StackOverflow中搜索“[c++]解析号”
使用命名标识符而不是幻数。例如,使用:
`#define MAXIMUM_ARRAY_SIZE 50`
`//...`
`char frase[MAXIMUM_ARRAY_SIZE];`
`//...`
`fgets(frase, MAXIMUM_ARRAY_SIZE, stdin);`
这确保您只需在一个位置更改数字,所有代码都将使用相同的数字
因为你正在使用C++,请使用<代码> STD::列表< /Cord>,不要浪费时间创建你自己的链表。
std::list
已经过测试,因此您无需对其进行测试
在C++中使用菜单选择读取,尝试:
int selection;
cin >> selection;
switch (selection)
{
//...
}
调试器说是哪一行导致了SEGFULT?请不要大声喊叫。另外,请不要试图让人们为您的应用程序玩调试器。导致问题的那一行是main()上的那一行。请看一下指南。这将有助于大大改进您的问题。
lista
或lista->arch
为null(或无效),或者重载的运算符内部出现其他错误
`#define MAXIMUM_ARRAY_SIZE 50`
`//...`
`char frase[MAXIMUM_ARRAY_SIZE];`
`//...`
`fgets(frase, MAXIMUM_ARRAY_SIZE, stdin);`
int selection;
cin >> selection;
switch (selection)
{
//...
}