Convert C realloc to Delphi -


int stackrealloc(stack* s){    if ((s->array = realloc(s->array,sizeof(int)*(s->size)*2)) != null){     s->size = (s->size)*2;     return 1;   }   else return 0; } 

how can convert code( c ) delphi ( delphi7 ) ?

the delphi function analagous c realloc reallocmem.

you could, if wished, make literal translation of c struct delphi record, , call reallocmem. in delphi use dynamic array instead of raw pointers:

var   arr: array of integer; ... setlength(arr, length(arr)*2); 

there's no need struct contains both array , size because delphi dynamic array keeps track of own length.

what's more not signal errors using 0 or 1 return value. instead not write explicit error checking in code , let runtime raise exception should call setlength fail.

since appear implementing stack, use tstack class found in contnrs unit. in modern delphi use generics.collections.tstack<integer> instead.

as aside, c code broken. fails handle errors correctly. if call realloc fails, null returned. since store away s->array, lost track of original block of memory , therefore leak it. 1 of golden rules of c programming never write: p = realloc(p, ...).


Comments

Popular posts from this blog

c++ - Creating new partition disk winapi -

Android Prevent Bluetooth Pairing Dialog -

VBA function to include CDATA -