C语言面试题(1)

tech2025-09-01  3

1.下面程序运行结果是?

#include <stdio.h> void func(int b[]) { int j; for(j=0;j<4;j++) b[j]=j; } int main() { int a[4] = {5,6,7,8},i; func(a); for(i=0;i<4;i++) printf("%2d",a[i]); return 0; }

0 1 2 3(因为子函数的形参传的是数组的地址)

下面函数有什么问题?

void DoSomeThing(...) { char *p; ... p = malloc(1024);// 分配 1K 的空间 if(NULL==p) return; ... p=readlloc(p,2048);// 空间不够,重新分配到 2K if(NULL==p) return; }

1、p = malloc(1024);应该写成: p = (char *) malloc(1024 * sizeof(char));

2、没有释放 p 的空间,造成内存泄漏。

关于动态内存

总是检查动态内存是否成功后再引用该指针!在分配struct空间是总是使用sizeof 分配内存时宁滥勿缺(别忘了加一)总是Free由malloc()函数返回的指针按照ANSI C标准Free函数是没有返回值的错误处理时不要忘了其它已经分配空间的释放
最新回复(0)