读书人

请教在一个函数中动态申请内存,怎么在

发布时间: 2012-02-06 15:52:45 作者: rapoo

请问在一个函数中动态申请内存,如何在main函数中释放
首先我在main外建立了这样一个函数
typedef short sample_t;
sample_t * duplicate(sample_t * src,unsigned int count)
{
sample_t *p;
if(count> 0)
{
p=(sample_t *)malloc(count);//类型转换(sample_t *)
}
memcpy(p,src,200);//源指针跟目的指针倒转,count为字节数非个数;
return p;
}

然后要在main中把他申请的空间释放,如果直接

int main()
{

sample_t samples[100];
sample_t *p;
for(int i=0;i <100;i++)
{
samples[i]=i+1;
}
p=duplicate(samples,100);
free(p);直接这样释放运行是报错
return 0;//返回一个数值
}
请问我应该如何改正呢?

[解决办法]
p=(sample_t *)malloc(count);//类型转换(sample_t *)
应该
p=(sample_t *)malloc(count * sizeof(sample_t));

读书人网 >C语言

热点推荐