用动态内存分配函数malloc分配内存时,经常会出现“取消对NULL指针的‘、、、’的引用”的警告,这是因为在写代码时,没有加判断内存分配是否分配成功的语句造成的。下面以用malloc函数存储10个整数为例,进行相关的说明。有关的的代码如下:
#include <iostream>
#include<stdlib.h>
int main()
{
int* a;
a = (int*)malloc(10 * sizeof(int));//用动态内存存储10个整数
int i = 0;
for (; i < 10; i++) {
*(a + i) = i+1;
}
--i;
for (; i >=0; i--) {//倒叙打印
printf("%d ", *(a + i));
}
free(a);
return 0;
}
这个程序再用malloc函数分配内存时,没有加判断内存是否成功的语句,故会出现如下警告:
加入判断语句的代码如下:
#include <iostream>
#include<stdlib.h>
int main()
{
int* a;
a = (int*)malloc(10 * sizeof(int));//用动态内存存储10个整数
int i = 0;
if (a == NULL) {
printf("内存分配不成功!\n");
}
else {
for (; i < 10; i++) {
*(a + i) = i + 1;
}
}
--i;
for (; i >=0; i--) {//倒叙打印
printf("%d ", *(a + i));
}
free(a);
return 0;
}
运行测试会发现该警告被取消了。