| Autor |
Nachricht |
tobis79211
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.03.2002
Beiträge: 395
|
tobis79211 Mitglied
20:08:00 13.05.2003 Titel: |
Speicherverwaltung |
Zitieren |
Hi,
ich hab nur um kurz sicher zu gehen eine Frage:
Stimmt es, dass C++ Speicher von Arrays selbst verwaltet?
Also muss ich, oder muss ich nicht darauf achten, dass ich einen sog. "Array out of bounds"-Fehler bekomme?
Gruss, Tobias |
|
|
|
 |
volkard
Moderator
Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25896
|
volkard Moderator
20:10:00 13.05.2003 Titel: |
|
Zitieren |
| Zitat: | Original erstellt von tobis79211:
Hi,
ich hab nur um kurz sicher zu gehen eine Frage:
Stimmt es, dass C++ Speicher von Arrays selbst verwaltet?
Also muss ich, oder muss ich nicht darauf achten, dass ich einen sog. "Array out of bounds"-Fehler bekomme?
Gruss, Tobias |
stimmt so nicht. normale arrays wie int a[100] funktionieren wie in c.
kanns aber dir selber klassen bauen, oder fremde kalssen verwenden, die speicher selber verwalten, grenzen überprüfen und was sonst noch brauchbar wäre. |
_________________ ewr-dienstleister krankenversicherung
|
|
 |
tobis79211
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.03.2002
Beiträge: 395
|
tobis79211 Mitglied
20:14:00 13.05.2003 Titel: |
|
Zitieren |
hm...ok
Aber:
Warum hab ich dann kein Problem in ein Array, dass mit 5 Elementen allokiert ist, 10 Elemente zu schreiben?
Also, ich rede z.B. von einem EigeneKlasseArray[5]; |
|
|
|
 |
volkard
Moderator
Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25896
|
volkard Moderator
20:17:00 13.05.2003 Titel: |
|
Zitieren |
| Zitat: | Original erstellt von tobis79211:
hm...ok
Aber:
Warum hab ich dann kein Problem in ein Array, dass mit 5 Elementen allokiert ist, 10 Elemente zu schreiben?
Also, ich rede z.B. von einem EigeneKlasseArray[5]; |
weil der speicher da ist.
| C++: | int main()
{
int arr[5];
int x=4711;
cout<<arr[6]<<endl;
} | |
mit ein wenig glück gibt das programm 4711 aus.
| C++: | 1 2 3 4 5 6 7 8 | int main()
{
int arr[5];
for(int i=0;i<6;++i)/eins zu weit
arr[i]=0;//ups, bei arr[6]=0 passiert in wirklichkeit
//i=0
//hübsche endlosschleife gebastelt.
} | | |
_________________ ewr-dienstleister krankenversicherung
|
|
 |
Gerard
Mitglied
Benutzerprofil
Anmeldungsdatum: 05.01.2002
Beiträge: 6118
|
Gerard Mitglied
20:27:00 13.05.2003 Titel: |
|
Zitieren |
verwalten und Array out of bounds sind doch erstmal zwei fragen
verwalten tut c++ arrays nicht anders als ander variablen
lokale arrays werden so wie ander variablen am ende des scopes gelöscht
dynamische arrays müssen mit new[] allociert werden und mit delete[] deallociert
zu "Array out of bounds" da wird nix zu gesagt, meistens kriegs du dann ne fehler meldung, ist aber nicht sicher
wenn du std::vector von stlport benutzt dann kriegst du aufjeden fall eine meldung
[ Dieser Beitrag wurde am 13.05.2003 um 20:28 Uhr von Dimah editiert. ] |
|
|
|
 |
tobis79211
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.03.2002
Beiträge: 395
|
tobis79211 Mitglied
20:32:00 13.05.2003 Titel: |
|
Zitieren |
ok, danke!
Also wird dann einfach im Speicher auf das nächste gezeigt, auch wenn das schwachsinn ist?
Wie allokiere ich denn Speicher in C++?
Auch einfach mir realloc ?? (doof gefragt...) |
|
|
|
 |
Gerard
Mitglied
Benutzerprofil
Anmeldungsdatum: 05.01.2002
Beiträge: 6118
|
Gerard Mitglied
20:35:00 13.05.2003 Titel: |
|
Zitieren |
|
 |
Shade Of Mine
Moderator
Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 19011
|
Shade Of Mine Moderator
20:35:00 13.05.2003 Titel: |
|
Zitieren |
| Zitat: | Original erstellt von tobis79211:
Also wird dann einfach im Speicher auf das nächste gezeigt, auch wenn das schwachsinn ist? |
jep
| Zitat: | | Wie allokiere ich denn Speicher in C++? |
new, new[] sowie delete,delete[] zum freigeben
siehe dein lieblings c++ buch |
_________________ A language that doesn't affect the way you think about programming is not worth knowing.
|
|
 |
volkard
Moderator
Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25896
|
volkard Moderator
20:38:00 13.05.2003 Titel: |
|
Zitieren |
| Zitat: | Original erstellt von tobis79211:
Wie allokiere ich denn Speicher in C++?
|
zum beispiel mit int arr[5];
was willste genau? ein array, das die größe ändern kann? wenn eins ausreicht, das automatisch nach bedarf wachsen kann, dann wäre std::vector geeignet.
| C++: | vector<int> v;
for(int i=0;i<5;++i)
v.push_back(i*i);//v wächst jeweils um eins
for(int i=0;i<5;++i)
cout<<v[i]<<endl;
//gibt 5 quadtratzahlen aus. | | |
_________________ ewr-dienstleister krankenversicherung
|
|
 |
tobis79211
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.03.2002
Beiträge: 395
|
tobis79211 Mitglied
20:42:00 13.05.2003 Titel: |
|
Zitieren |
ok, aber was mach ich, wenn ich ein Array "feld" mit 5 Schlüsseln habe und es erweitern muss auf 10?
| C++: | feld = new int[5];
feld2 = new int[10];
for(int i=0;i<5;i++) feld2[i] = feld[i];
delete feld;
feld = new int[10];
feld = feld2;
delete feld2; | |
????
Kann das sein, oder geht das nicht schlauer?? |
|
|
|
 |