مقدار NULL
«NULL» یعنی اشاره گرِ تهی. اشاره گر (Pointer) آدرس یک داده است. پس وقتی «NULL» باشد، به هیچ چیز اشاره نمی کند. بنابراین قبل از استفاده، اشاره گر را با «NULL» مقایسه کن.
NULL در عمل
خیلی از توابعِ C در خطا «NULL» برمی گردانند. مثلاً fopen() و malloc(). بنابراین حتماً نتیجه را چک کن.
#include <stdio.h>
int main() {
FILE *fptr = fopen("nothing.txt", "r");
if (fptr == NULL) {
printf("Could not open file.\n");
return 1;
}
fclose(fptr);
return 0;
}
بررسی شکست تخصیص حافظه
اگر حافظه کافی نباشد، malloc() مقدار «NULL» می دهد. سپس باید پیام مناسب بدهی و خارج شوی.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *numbers = (int*) malloc(100000000000000 * sizeof(int));
if (numbers == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
printf("Memory allocation successful!\n");
free(numbers);
numbers = NULL;
return 0;
}
سه گام امن با مقدار NULL
- نتیجه تابع را بلافاصله چک کن.
- اگر «NULL» بود، پیام بده و برگرد.
- پس از آزادسازی، اشاره گر را «NULL» کن.
نکته: برای دیباگ بهتر، صفحه دیباگ را ببین. همچنین مدیریت خطا را در رسیدگی به خطا دنبال کن.
جمع بندی سریع
- «NULL» یعنی اشاره گرِ بدون مقصد.
- قبل از استفاده، با «NULL» مقایسه کن.
- توابعِ ناموفق معمولاً «NULL» می دهند.
- بعد از free، اشاره گر را «NULL» کن.