#1656. c语言7.26 分析代码问题
c语言7.26 分析代码问题
当前没有测试数据。
问题描述
程序员面试题:利用函数分配存储字符串的内存,并在主程序中使用,请分析以下代码存在的问题是什么?
#include <stdio.h>
#include <stdlib.h>
int main(){
int size = 10,i;
int new_size;
//利用malloc函数申请存储10个整数的内存空间
int *p = (int*) malloc(size * sizeof(int));
if (p == NULL) {
printf("内存分配失败.");
return 1;
}
for (i = 0; i < size; i++)
p[i] = i;//初始化元素为0~9
for (i = 0; i < size; i++)
printf("%d ", p[i]);//打印动态数组p
new_size = 20;
/*利用realloc函数扩大动态数组p的容量,使其可以存储20个整数*/
p = (int*) realloc(p, new_size * sizeof(int));
/*申请到新内存后将复制原内存数据到新内存中*/
if (p == NULL) {
printf("内存分配失败.");
return 1;
}
for (i = size; i < new_size; i++)
p[i] = i;//初始后面10个新元素为10~19
for (i = 0; i < new_size; i++)
printf("%d ", p[i]);//显示所有元素
free(p);//释放该20个整数的内存空间给系统
p = NULL;//使指针p不指向任何内存,避免野指针
}
格式
输入
无
输出
无
样例
提示
数据范围、额外说明、样例说明等等