我定义了一个函数:
{
double *tp=(double *)malloc(10);
return tp;
}
void main()
{
double *tp1,*tp2;
tp1=init();
tp2=init();
}
上面中两次分配的内存会出现重复?
[此贴子已经被作者于2006-6-29 16:14:15编辑过]
----------------解决方案--------------------------------------------------------
基本上是不会的啦~
----------------解决方案--------------------------------------------------------
double *tp=(double *)malloc(10);
error
----------------解决方案--------------------------------------------------------
但下面这个程序就不能正常执行:
[CODE]#include <stdio.h>
#include <stdlib.h>
double *init()
{
double *tp=(double *)malloc(5);
return tp;
}
void main()
{
double *tp1,*tp2;
int i;
tp1=init();
for(i=0;i<5;i++)
*(tp1+i)=i;
tp2=init();
for(i=5;i>=0;i++)
*(tp2+i)=i;
for(i=0;i<5;i++)
printf("%lf ",*(tp1+i));
printf("\n");
for(i=0;i<5;i++)
printf("%lf ",*(tp2+i));
}[/CODE]
----------------解决方案--------------------------------------------------------
double *tp=(double *)malloc(10);
error
????
可以说明白点吗?
----------------解决方案--------------------------------------------------------
返回局部变量了。
----------------解决方案--------------------------------------------------------
(double*)tp=(double *)malloc(10);
必须要这么写么??
----------------解决方案--------------------------------------------------------
还是不明白,写下怎么改就好
----------------解决方案--------------------------------------------------------
[QUOTE]#include <stdio.h>
#include <stdlib.h>
double *init( double * tp)
{
tp=(double *)malloc(5);
return tp;
}
void main()
{
double *tp1,*tp2;
int i;
tp1=init(tp1);
for(i=0;i<5;i++)
*(tp1+i)=i;
tp2=init(tp2);
for(i=5;i>=0;i++)
*(tp2+i)=i;
for(i=0;i<5;i++)
printf("%lf ",*(tp1+i));
printf("\n");
for(i=0;i<5;i++)
printf("%lf ",*(tp2+i));
}[/QUOTE]
我没测试.应该可以.原因正如6楼所说
----------------解决方案--------------------------------------------------------
楼上的还是不行.
刚搜索了论坛里的旧帖,看到把malloc里的参数改为5*sizeof(double)就可以了.
能说一下malloc(5)与malloc(5*sizeof(double))的区别吗?
----------------解决方案--------------------------------------------------------