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);
if(NULL==p
)
return;
...
p
=readlloc(p
,2048);
if(NULL==p
)
return;
}
1、p = malloc(1024);应该写成: p = (char *) malloc(1024 * sizeof(char));
2、没有释放 p 的空间,造成内存泄漏。
关于动态内存
总是检查动态内存是否成功后再引用该指针!在分配struct空间是总是使用sizeof 分配内存时宁滥勿缺(别忘了加一)总是Free由malloc()函数返回的指针按照ANSI C标准Free函数是没有返回值的错误处理时不要忘了其它已经分配空间的释放