Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Cabezon_Encebollao

#1
Muchas gracias, Mafus! Reconozco que me hago un lio bastante gordo con ellas!  tengo muy buenas ideas en la cabeza, y cuando me pongo a ello, ya ves... la lio parda :D
#2
Lo haré tienes toda la razon, la que se puede liar por un triste espacio de memoria!
Y no te imaginas lo mucho que me has ayudado con el tema de la asignacion de memoria. No me entraba en la cabeza de que estaba reasignandolo y liandola parda. Ya me siento valiente hasta la proxima liada!
Mil gracias de nuevo, a veces es desesperante tener fallos y no tener ni idea de que pasa y de donde vienen
#3
Genial!! ahora ya lo entiendo, Calgary! no contaba con que cambiaba el tipo de asignacion de memoria! Ahora ya entiendo porque pasaba. Mil millones de gracias.. con esto de las memorias estaba echo un lio, ahora ya lo entiendo! tomate unas cuantas cervezas a mi salud, que las has ganado aguantandome :D ( y yo echando la culpa al pc.. sere prepotente :P)
#4
He encontrado un par de fallos (mios, mecagonlamarsalada)

1. La primera funcion no logre hacerla funcionar de nuevo, asi que la quite y lo hice desde el propio main... con el codigo que te mando ahora funciona perfectamente... tanto con el delete[] como con el delete!!!

2. El otro problema es cuando inicializo el puntero tal que asi: p="Puntero cabron". El cout lo muestra... pero el delete lo revienta. Con el codigo que te mando ahora, me funciona (igual actualizar el lxle sirvio, yo ya no se na jaja)
Código (cpp) [Seleccionar]

#include<iostream>
using namespace std;

int contadorStrings(string s)
{
    int cuenta=0;
    for(int a=0;s[a]!='\0';a++)cuenta++;
    return cuenta;
};

int main()
{
    string texto="Pruebas de funcionamiento";
    cout<<texto<<" : "<<contadorStrings(texto)<<endl;

    char *d=NULL;
    d=new char[contadorStrings(texto)];

    // Si en lugar de la secuencia for inferior pongo p="texto"; el delete rompe
    for(int a=0;texto[a]!='\0';a++)
    {
        d[a]=texto[a];
        cout<<texto[a]<<" ";
    };
    d[contadorStrings(texto)]='\0';

    cout<<"\nEl contenido del puntero es: "<<d<<endl;

    delete[] d;
    return 0;

};

#5
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 (cpp) [Seleccionar]


#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;
};

#6
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.
#7
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
#8
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.
#9
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!
#10
Hola gente! soy un poco novato en esto.. y no se si es que estoy metiendo mucho la pata, o es algo del S.O. queno he instalado bien (uso lubuntu... o mas bien me usa a mi , aun no se jjjj)

El tema es que intento hacer un programa para ralentizar la salida de caracteres, y no doy con ello... si alguien ve el error agradeceria que me echara una mano (despues de lavarse los ojos, que ya dije que soy novato.. y burro a mas no poder, he de decir jjjj)

a ver codigo:

#include<stdio.h>
#include<string.h>
#include <iostream>

char cadena[100];
int contador,retardo;

int main()
{
   std::cout <<"\nEscribe una cadena de texto:\n\t";
   gets(cadena);
   contador=strlen(cadena);
   std::cout<<"\n\n Numero de caracteres de la cadena: "<<contador<<"\n\n\n";
   for (retardo=0;retardo<=contador;retardo++)
   {
             std::cout<<" "<<cadena[retardo];
             sleep(2);
   };
};

Ale ese es el "invento" :S