请问一个有关问题
请教一个问题?
#include "stdio.h "
int a[3][3]={1,2,3,4,5,6,7,8,9},*p;
void main()
{p=(int *)malloc(sizeof(int));
f(p,a);
printf( "%d\n ",*p)
}
f(int *s,int p[ ][3])
{ *s=p[1][1];}
请问:题中的第三句语句,即:p=(int *)malloc(sizeof(int));
这句语句表示什么意思?如果没这句语句会怎么样?一般什么时候要用到 这个语句的?谢谢回答~~~~
------解决方案--------------------
这就是在堆中分配sizeof(int)大小的内存,并使p指向这块内存。
相当于c++中的int *p = new int;
------解决方案--------------------
当你需要向系统要一块内存时使用它。就好像向银行贷款一样,是要还滴:
free(p);
------解决方案--------------------
这个程序不会有什么问题,因为马上就结束了,系统会自动追回你欠的内存的。如果你的程序是连续工作的,而且经常每次都欠这么一下,虽然欠的不多,但积累起来,系统的内存很快就会被你借光了,系统就要跟硬盘借了,你的硬盘就开始不停的嘎吱嘎吱响……连硬盘都借光了的话,你就该按Reset键了吧。
------解决方案--------------------
建议你看看高质量C\C++编程,在使用指针前必须为其分配内存,否则将会产生野指针
#include "stdio.h "
int a[3][3]={1,2,3,4,5,6,7,8,9},*p;
void main()
{p=(int *)malloc(sizeof(int));
f(p,a);
printf( "%d\n ",*p)
}
f(int *s,int p[ ][3])
{ *s=p[1][1];}
请问:题中的第三句语句,即:p=(int *)malloc(sizeof(int));
这句语句表示什么意思?如果没这句语句会怎么样?一般什么时候要用到 这个语句的?谢谢回答~~~~
------解决方案--------------------
这就是在堆中分配sizeof(int)大小的内存,并使p指向这块内存。
相当于c++中的int *p = new int;
------解决方案--------------------
当你需要向系统要一块内存时使用它。就好像向银行贷款一样,是要还滴:
free(p);
------解决方案--------------------
这个程序不会有什么问题,因为马上就结束了,系统会自动追回你欠的内存的。如果你的程序是连续工作的,而且经常每次都欠这么一下,虽然欠的不多,但积累起来,系统的内存很快就会被你借光了,系统就要跟硬盘借了,你的硬盘就开始不停的嘎吱嘎吱响……连硬盘都借光了的话,你就该按Reset键了吧。
------解决方案--------------------
建议你看看高质量C\C++编程,在使用指针前必须为其分配内存,否则将会产生野指针