, . .
, , . . , , . .
<allo.h>, <stdlib.h>.
1. void* malloc() - n 1- , 0. .
void main(void){
char *original= ;
char *copy;
copy=(char*)malloc(strlen(original)+1);
if(copy==NULL) {
puts( );
exit(1);
}
strcpy(copy,original);
cout<<copy<<endl; cout<<original<<endl;
free(copy);
}
. .
2. void* calloc(n,size type);
long* newmas = (long*)calloc(100,sizeof(long));
- ;
- p .
calloc() .
#define SIZE 128
void main(void) {
char *str=(char *)calloc(1,SIZE);
if(str==NULL) {
puts( );
exit(1);
}
else {
cout<< ;
gets(str);
cout<<str;
free(s);
}
}
3. void* realloc(void *, n) - . , .
ptr = realloc(nptr, size);
nptr - ; size .
void main(void) {
char *p1, *p2;
puts( 128 );
p1=malloc(128);
if(p1) {
puts( 256 );
p2=realloc(p1,256); // 256
}
if(p2)
free(p2);
else
free(p1);
}
4. void free(void *ptr) - .
64 - .
18.1 new delete ++
++ () .
new delete , , , malloc free.
:
- = new <->;
...
delete -;
.
new "", ( ) sizeof() ( ""). - , delete .
|
|
new . (, ). malloc, , . , " ", .
name *nameptr // name ,
...
if (!(nameptr = new name)) {
errmsg(" name");
exit (1);
}
...
delete nameptr; // name
//sizeof(name)
new, , .
new
"" , new . new :
mat_ptr = new int[3][10][12]; //
mat_ptr = new int[3][][12]; //
...
delete [] mat_ptr; // , ,
// mat_ptr