跪求高手解惑,小菜鸟在此谢过!
1)malloc.h这个头文件除了malloc()函数,里面还包含realloc() calloc()这几个函数吗?
2)在某次编程实践我关于 分配200字节(或25块整形空间)写了三种形式:
int *p1 = (int *) malloc( 200 ); //VC++6.0环境下int占4字节,此行相当于分配25块int空间
int *p2 = (int *) calloc( 25, sizeof( int ) ); //直接分配25块int空间
int *p3 = (int *) malloc( sizeof( int ) ); //先分配1块整形空间
p3 = (int *)realloc( p3, 200 ); /* 再用realloc函数把一块整形空间改换成200字节空间,
即:把一块整形空间改换成25块整形空间(VC++6.0编译环境) */
请 众多高手 帮我解惑:我的这三种写法逻辑上对吗,如果不对应该怎么改?(暂不考虑内存安全问题)
我的意思是malloc函数与realloc函数还有calloc函数有什么异同点?
3)关于同一段动态分配内存重复释放的问题:
我在A函数分配了一段内存:
int *p = (int *) malloc( sizeof( int ) );
现在&p作为实参传递进入B函数,进行了一些操作,完事以后在B函数将指针变量p指向的空间free掉了,但是由于粗心,在B函数执行完成后返回A函数又执行了一次free(p);
这个程序执行时显示“××.exe已停止工作”(环境是Win7旗舰版SP1),这个是程序自己执行的时候出了问题,还是被操作系统做掉了?
以上问题在线跪求高手解答,谢过!
三国纷争
明月笑刀无情