elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Fallo en Code::Blocks? Sistema operativo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Fallo en Code::Blocks? Sistema operativo?  (Leído 4,460 veces)
Cabezon_Encebollao

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Fallo en Code::Blocks? Sistema operativo?
« en: 14 Julio 2018, 09:41 am »

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


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #1 en: 14 Julio 2018, 10:40 am »

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

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Cabezon_Encebollao

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #2 en: 14 Julio 2018, 11:35 am »

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


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #3 en: 14 Julio 2018, 14:33 pm »

Vas a incluir lo que haces con la memoria pedida?
Es allí donde está el problema, según yo.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Cabezon_Encebollao

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #4 en: 14 Julio 2018, 15:52 pm »

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! :D
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #5 en: 14 Julio 2018, 16:04 pm »

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

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Cabezon_Encebollao

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #6 en: 14 Julio 2018, 16:28 pm »

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


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #7 en: 14 Julio 2018, 16:38 pm »

Cambia algo el comportamiento si pides un espacio de memoria para el '\0' fiinal?


Código
  1. char *d = new char[contadorStrings(texto)];

modificalo por

Código
  1. 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

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Cabezon_Encebollao

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #8 en: 14 Julio 2018, 16:52 pm »

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!

Código
  1.  
  2. #include<iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    char *d=new char[10];
  8.    d="Prueba";
  9.    cout<<"El contenido del puntero es: "<<d<<endl;
  10.    delete[] d;
  11.    return 0;
  12. };
  13.  
  14.  
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Fallo en Code::Blocks? Sistema operativo?
« Respuesta #9 en: 14 Julio 2018, 17:08 pm »

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

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con CODE BLOCKS 8.02
Programación C/C++
Silvia Alicia 8 4,361 Último mensaje 29 Noviembre 2012, 15:11 pm
por Silvia Alicia
Compilador code blocks
Dudas Generales
~H~ 2 2,475 Último mensaje 19 Abril 2013, 21:27 pm
por OmarHack
FALLO AL INICIAR EL SISTEMA OPERATIVO WINDOWS 7
Windows
ftejada 3 11,468 Último mensaje 14 Mayo 2014, 14:25 pm
por Randomize
Instalación de SDL en Code::Blocks
Programación C/C++
DeMoNcRaZy 4 3,541 Último mensaje 20 Junio 2015, 23:17 pm
por DeMoNcRaZy
[C++][?]Code::blocks + wxformbuilder "generate code error"
Programación C/C++
vitoafk 0 1,721 Último mensaje 2 Octubre 2015, 04:06 am
por vitoafk
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines