Avatar billede jakobdo Ekspert
18. maj 2003 - 12:32 Der er 5 kommentarer og
1 løsning

Dynamisk buffer...

Hej, så er jeg tilbage...

Hvordan laver man en dynamisk buffer??
Jeg har læst lidt rundt omkring, at man kan bruge noget STL - vector??

jeg læser indputtet fra en pop3 server. bruger jeg kommandoen list...
får jeg 1 1055, hvor 1055 er størrelsen på en mail...

JEg vil jo så gerne have en buffer som har størrelsen 1055+1...

Nogle gange kan en mail jo så være 1024244 størrelsen...

Nogle som forstår mit problem??

Jeg kan jo ikke bruge en buffer[100000000], det vil jo tage for meget plads... :)
Avatar billede arne_v Ekspert
18. maj 2003 - 12:45 #1
En vector er et STL objekt som er et ægte dynamisk array.

Jeg tror dog ikke at det lige er sagen til din problem stilling.

int len = ...;
char *buf = (char *)malloc(len+1);

eller

int len = ...;
char *buf = new char[len+1];

tror jeg bedre passer til problem stillingen.
Avatar billede jakobdo Ekspert
18. maj 2003 - 12:46 #2
Arne, er der ikke noget med new er en C++ funktion, og malloc en C??

Jeg koder jo til linux, og bruger compileren GCC, så går udfra jeg skal bruge malloc()??
Avatar billede soreno Praktikant
18. maj 2003 - 12:47 #3
Eller hvis man er til (subjektiv) nemmere syntaks:

char *buf = new char[len+1]
[..]
delete [] buf;
Avatar billede laffe Nybegynder
18. maj 2003 - 12:47 #4
Kan du ikke bare allekere en Buffer fra Heap'en

eg:

unsigned char* MyBuffer;

MyBuffer = malloc(1024*50);

Nu har du en buufer på 50 kb.

For at deallokere din buufer, kalder du:

free(MyBuffer);
Avatar billede arne_v Ekspert
18. maj 2003 - 12:57 #5
new er C++

malloc kan bruges både i C og i C++

i C++ vil new nok anses for kønnest

GCC indeholder både C og C++

Du kan oversætte C med gcc kommandoen og C++ med g++ kommandoen.
Avatar billede arne_v Ekspert
18. maj 2003 - 12:58 #6
malloc memory frigør man med free

new memory frigør man med delete
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester