取消VS中“取消对NULL指针的‘、、、’的引用”的警告的方法

用动态内存分配函数malloc分配内存时,经常会出现“取消对NULL指针的‘、、、’的引用”的警告,这是因为在写代码时,没有加判断内存分配是否分配成功的语句造成的。下面以用malloc函数存储10个整数为例,进行相关的说明。有关的的代码如下:
#include 
#include
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函数分配内存时,没有加判断内存是否成功的语句,故会出现如下警告:
取消VS中“取消对NULL指针的‘、、、’的引用”的警告的方法_第1张图片
加入判断语句的代码如下:

#include 
#include
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;
}


运行测试会发现该警告被取消了。

你可能感兴趣的:(c语言)