Skocz do zawartości

Problem Z Kopiowaniem Const Char * To Char *


marcintom

Rekomendowane odpowiedzi

wiem ze to raczej nie to forum ale spieszy mi sie ogromnie

 

to kod

#include<iostream>
using namespace std;
class elem
{ char *imie;

elem *nast;
public:
elem (const char *_imie, elem *_nast)  {  int i=0;
                                               char zero= 0;
                                                     while ( _imie[i] != zero )
                                                     {  cout << imie[i];
                                                         imie[i] = _imie[i]; i++;}

                                                     imie[i] = 0;
                                            nast = _nast;
                                                }
~elem(){ };
};

int main()
{
cout << "0";

const char *z = "imie";
cout << "1";
elem x(z, NULL);
return 0;

 

Czemu to cholerstwo wywala naruszenie ochrony pamieci - roznych zeczy probowalem i nie wiem

Odnośnik do komentarza
Udostępnij na innych stronach

Przede wszystkim musisz zaalokować pamięć, a w destruktorze powinieneś ją zwolnić.

 

elem (const char *_imie, elem *_nast)  {  int i=0;
                                              // char zero= 0;// nie wiem po co to jest
                                              // tutaj alokujesz pamiec nastringa
                                               imie = new char[strlen(_imie) + 1];                              
                                              //while ( _imie[i] != zero )
                                             while ( _imie[i])
                                                     {  
                                                         //cout << imie[i];
                                                         imie[i] = _imie[i]; 
                                                         i++;
                                                    }
                                                

                                                     imie[i] = 0;
                                            nast = _nast;
                                                }
~elem(){
// tu dodałem
delete imie;
};

 

A w tym konstruktorze to mógłbyś zamiast tego żmudnego kopiowania znak po znaku użyć fukcji strcpy.

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...