请问在一个函数中动态申请内存,如何在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));