Autor
|
Tema: Fallo en Code::Blocks? Sistema operativo? (Leído 5,045 veces)
|
Cabezon_Encebollao
Desconectado
Mensajes: 10
|
Hola gente, muy buenas! Vereis, tengo un problema que me esta quemando bastante.. y como no soy de mirarme el ombligo, creo que el fallo no es mio EJEM! vereis , supuestamente este codigo esta bien, verdad?
#include<iostream> using namespace std;
int main() { char *punteru= new char[10];
// trabajillos con el punteru y al final...
delete[] punteru; };
No deberia funcionar sin problemas? tambien probe con el simple delete, por si las moscas, y nada, me sale con Aborted, core dumped! Lo unico que me deja hacer para "eliminarlo" es ponerlo a NULL, pero no deberia ser asi! Uso un sistema operativo muy light (lxle, tipo lubuntu) .. sera incompatible con alguna libreria? Si os paso alguna vez, agradeceria mucho un poco de luz en el asunto!
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Hay parte del código censurado, y sospecho que el problema está allí.
Que estás haciendo con la memoria pedida?
Otras cosas: - Este programa mínimo no requiere el include o el using, y - deberías hacer un return 0 antes de salir del main.
|
|
|
En línea
|
|
|
|
Cabezon_Encebollao
Desconectado
Mensajes: 10
|
ups es cierto Calgary! se me paso meter el return 0.. de todos modos no cambia nada.. respecto a la memoria perdida... no tengo ni idea! soy bastante novato y estoy aprendiendo poco a poco a base de palos.. y fallos como este me fastidian bastante la verdad. Como puedo comprobar la memoria perdida? Intento compensarlo poniendo el puntero a NULL, pero como esta creado con new, no se si sirve de algo.
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Vas a incluir lo que haces con la memoria pedida? Es allí donde está el problema, según yo.
|
|
|
En línea
|
|
|
|
Cabezon_Encebollao
Desconectado
Mensajes: 10
|
Supongo, otro remedio no me queda creo... la unica salida que veo es dejar de usar char* y empezar a usar string, no te parece? otra cosa que no me va, es lo de sufijos de la libreria string. Me parece que en este "ordenador" - es un laptop que le tengo mucho cariño por su comodidad, pero potencia cero- tengo muchas lagunas de restricciones. Perdona que te vuelva a preguntar, pero, el poner el puntero a NULL, tiene algun efecto sobre estos char* creados con new? Gracias por todo Calgary, vaya paciencia amigo!
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Insisto pues creo que hay codigo que no has incluido, pero puedo estar equivocado.
Cuando pusiste
// trabajillos con el punteru y al final...
hay codigo que no incluiste? o en verdad tienes un comentario en el codigo y este programa que solo define memoria, no hace nada, que tiene un comentario, y libera la memoria al final, falla?
Te he preguntado 3 veces de distintas maneras, pero no logro saber si no estas incluyendo codigo en lo que preguntas para simplificar la pregunta.
Podrias explicitamente decir si hay codigo que no estas mostrando? y si es este el caso, podrias incluirlo?
|
|
|
En línea
|
|
|
|
Cabezon_Encebollao
Desconectado
Mensajes: 10
|
Ahh PERDON !! no te estaba entendiendo! el codigo que estaba probando era este (y de nuevo mil perdones, me obceco):
#include<iostream> using namespace std;
void ConversionStringChar(string s, char *&c) { int cont=0; for(int a=0;s[a]!='0';a++) { c[a]=s[a]; cont++; }; c[cont]='\0'; };
int contadorStrings(string s) { int cuenta=0; for(int a=0;s[a]!='\0';a++)cuenta++; return cuenta; };
int main() { string texto="Pruebas de aprendizaje"; cout<<texto<<endl; cout<<contadorStrings(texto)<<endl;
char *d = new char[contadorStrings(texto)]; ConversionStringChar(texto,d);
cout<<"El contenido del puntero es: "<<d<<endl;
delete[0] d;
return 0; }; // El programa finaliza con el error de Segmentation Fault. (Core dumped) // Poniendolo a NULL finaliza bien, pero no se si lo toma en serio o no.
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Cambia algo el comportamiento si pides un espacio de memoria para el '\0' fiinal? char *d = new char[contadorStrings(texto)];
modificalo por char *d = new char[contadorStrings(texto)+1];
Si es este el caso, o no, podrias publicar el codigo, encerrando tu codigo usando el "Codigo Geshi" que aparece entre los botones arriba, para que uno pueda indicar en que linea se ve un problema, y el codigo aparezca con colores de acuerdo a la sintaxis del lenguaje que elijas?
|
|
|
En línea
|
|
|
|
Cabezon_Encebollao
Desconectado
Mensajes: 10
|
Hola Calgary! Eso si que lo probé.. pero ahora el caso, es que no se que cambios debí hacer, porque es cierto que ahora no me va ni sin el delete. Ahora estoy mal de tiempo y no puedo ponerme con ello, así que corto por lo sano y pruebo con esto... es mas sencillo,y no debería dar ningún error! #include<iostream> using namespace std; int main() { char *d=new char[10]; d="Prueba"; cout<<"El contenido del puntero es: "<<d<<endl; delete[] d; return 0; };
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Cambiaste el problema por otro. Pides memoria en la linea 7 y luego la ignoras y sobreescribes en la linea 8.
Hiciste lo mismo que asignar una variable y luego volverla a asignar con otro valor
i = 3; i = 5;
El 3 que esta en la primera linea se pierde con la asignacion de 5. Lo mismo con la memoria que pediste, no tiene sentido liberarla despues en la linea 10 porque la variable d ya no tiene la memoria pedida.
Te sugiero copiar el string, no asignarlo para resolver el problema DE ESTE PROGRAMA y se sugiero pedir memoria suficiente EN EL PROGRAMA ANTERIOR.
Reemplaza la asignacion por
strcpy( d, "Prueba" );
// #include <string.h> es necesario
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con CODE BLOCKS 8.02
Programación C/C++
|
Silvia Alicia
|
8
|
4,726
|
29 Noviembre 2012, 15:11 pm
por Silvia Alicia
|
|
|
Compilador code blocks
Dudas Generales
|
~H~
|
2
|
2,706
|
19 Abril 2013, 21:27 pm
por OmarHack
|
|
|
FALLO AL INICIAR EL SISTEMA OPERATIVO WINDOWS 7
Windows
|
ftejada
|
3
|
11,869
|
14 Mayo 2014, 14:25 pm
por Randomize
|
|
|
Instalación de SDL en Code::Blocks
Programación C/C++
|
DeMoNcRaZy
|
4
|
3,890
|
20 Junio 2015, 23:17 pm
por DeMoNcRaZy
|
|
|
[C++][?]Code::blocks + wxformbuilder "generate code error"
Programación C/C++
|
vitoafk
|
0
|
1,937
|
2 Octubre 2015, 04:06 am
por vitoafk
|
|