当前位置: 代码迷 >> C语言 >> [求助]用malloc分配内存会重复?
  详细解决方案

[求助]用malloc分配内存会重复?

热度:488   发布时间:2006-06-29 16:13:48.0
[求助]用malloc分配内存会重复?

我定义了一个函数:

double *init()
{
double *tp=(double *)malloc(10);
return tp;
}

void main()
{
double *tp1,*tp2;
tp1=init();
tp2=init();
}




上面中两次分配的内存会出现重复?

[此贴子已经被作者于2006-6-29 16:14:15编辑过]

搜索更多相关的解决方案: 内存  malloc  double  init  定义  

----------------解决方案--------------------------------------------------------

基本上是不会的啦~


----------------解决方案--------------------------------------------------------
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]


----------------解决方案--------------------------------------------------------
以下是引用论坛在2006-6-29 16:18:57的发言:
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))的区别吗?
----------------解决方案--------------------------------------------------------
  相关解决方案