cailuncailun 2016-04-15 02:45 采纳率: 0%
浏览 2129
已结题

求大神~~ c free()结构体指针出错

本人菜鸟一枚,调试程序时发现下面的程序只要用free()来释放结构体指针就出错,百思不得其解,望大师指正!非常感谢啦!
注:本人用的是VC6.0。自己写的C程序,私心揣测难道是结构体指针特殊一点,或者我释放的方式不对~
补充:C-Free 5.0上选择mingw5调试则没有问题!到底哪里有问题?
图片说明

#include <stdio.h> 
#include <stdlib.h>
#include <malloc.h> 

struct Particle{
     int age;
     double money;
     double famly[4];
     };//定义一个结构体变量 


int main()
{    int PM=5,i,j;
     double *ptr=(double *)calloc(PM,sizeof(double)); 
     struct Particle *swarm=(struct Particle *)calloc(PM,sizeof(struct Particle)); 

     if(swarm==NULL)
     {printf("给swarm申请内存失败!\n");
     exit(1);//异常退出
     }
     else printf("给swarm申请内存成功!\n");

     for(i=0;i<PM;i++,swarm++) //对结构体指针赋值并输出
     {
     swarm->age=2*i;
     swarm->money=3*i+0.55;
       printf("swarm[%d]: age=%d,money=%lf ",i,swarm->age,swarm->money);
     for(j=0;j<4;j++)
        {swarm->famly[j]=1.5*j;printf("%lf ,",swarm->famly[j]);}
     printf("\n");
     }

       printf("\n");//对double型数组赋值并输出
     for(i=0;i<PM;i++)
     printf("%lf\n",ptr[i]+i*0.5);
     printf("\n");

     free(ptr);ptr=0;
     //free(swarm);swarm=NULL;  
     //为什么上面语句一添加程序运行就出问题呢??!!而free(ptr)就没问题? 

     printf("\n\n"); 

} 
  • 写回答

4条回答

  • 彼岸花的妩媚 2016-04-15 03:09
    关注

    我试了你的代码,没问题啊。。。

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程