c指針深入理解--動態內存管理
一、動態內存管理:
1)malloc:
特點:單純的分配內存,執行速度較快
2)calloc:
特點:分配內存,並對該內存清零,執行速度比malloc慢
3)realloc:
-》函數原型:void *realloc(void *ptr, size_t size);
*ptr 不為空:
1)size = 空,釋放內存
2)size 比原內存小,利用當前內存塊,分配更小內存塊
3)size比原內存大,當前位置或者其他位置分配更大內存
4)alloca:
特點:在盞分配內存
二、迷途指針:
1)釋放內存時,沒有先清零指針
-》情況1,
int *ptr = malloc( sizeof(int ));
*ptr = 10;
free( *ptr); // 因釋放前沒有清零指針,導致ptr變成了迷途指針。
-》情況二
int *ptr = malloc( sizeof(int ));
*ptr = 10;
int *ptr2;
ptr2 = ptr; // 這個也是迷途指針
free( *ptr); // 因釋放前沒有清零指針,導致ptr變成了迷途指針。
2)指針在全局定義,但在盞內賦值
int *ptr;
{
int tmp = 10;
ptr = &tmp;
}