级指针如何释放

nuoshueihe 2013-01-16 04:08:55
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct STUTAG
{
int age;
char name[100];
char addr[40];
}STU;

int main()
{
STU* pt1 = (STU*)malloc(sizeof(STU)*2);
//通过方式一赋值
if(pt1 != NULL)
{
pt1[0].age = 10;
strcpy(pt1[0].name,"this is test");
pt1[1].age = 20;
strcpy(pt1[1].name,"this is xxxtest");
}
//通过方式2赋值
/*
if(pt1 != NULL)
{
pt1->age = 10;
strcpy(pt1->name,"this is test");
pt1 ++;
pt1->age = 10;
strcpy(pt1->name,"this is testnsn");
pt1--;
}
*/

STU** pt2 = (STU**)malloc(sizeof(STU*)*2);
pt2[0] = pt1;
pt1++;
pt2[1] = pt1;
pt1--;
printf("pt2[0]: pt2[0]->name %s\n", pt2[0]->name);
printf("pt2[1]: pt2[1]->name %s\n", pt2[1]->name);
free(pt1);
//到底如何释放pt2呢?我们项目里面都是free(&pt2)使用,但是我测试发现会出core,这样释放返回没有问题free(&pt2[0]),不得期解,望各位高手指教
//free(&pt2)/free(&pt2[0]);
return 0;


...全文
253 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuoshueihe 2013-01-16
  • 打赏
  • 举报
回复
引用 3 楼 whizer 的回复:
你的pt1已经释放了,接下来直接释放掉pt2就可以了。free(pt2);
谢谢你的回答。你的回答是正确的。 因为对于pt2来说我是重复利用pt1给赋值. 导致pt1给释放了2次。所以会产生core. 如果不释放pt1,因为pt2[0]指向pt1,可以通过free(pt1)或者pt2[0]来释放pt1分配的空间。这时候就直接释放pt2了。
STU* pt11 = (STU*)malloc(sizeof(STU)*2);
STU* pt12 = (STU*)malloc(sizeof(STU)*2);
        pt2[0] = pt11;
        pt2[1] = pt12;
        int i = 0;
        for(i=0 ; i< 2; i ++)
        {
 //通过pt2去释放pt11和pt12的内存空间,如下方式等同于free(pt11)和free(pt12)
                free(pt2[i]);
        }
        free(pt2);
whizer 2013-01-16
  • 打赏
  • 举报
回复
你的pt1已经释放了,接下来直接释放掉pt2就可以了。free(pt2);
nuoshueihe 2013-01-16
  • 打赏
  • 举报
回复
引用 1 楼 lile1234_show 的回复:
C/C++ code?123for(i = 0; i < 2; i++) free(pt2[i]); free(pt2);
谢谢你的回答。可是我并没有对pt2的pt2[0]和pt2[1]分配内存,如果分配了可以按照你说的那样释放。 我测试了,按照你指出的方法还是不行。
lee_鹿游原 2013-01-16
  • 打赏
  • 举报
回复

for(i = 0; i < 2; i++)
  free(pt2[i]);
 free(pt2);
内容概要:本文提出一种基于鱼鹰优化算法(OOA)优化的CNN-BiGUR-Attention混合模型,用于提升短期风电功率预测的精度与稳定性,采用Matlab实现代码仿真。该模型融合卷积神经网络(CNN)提取输入数据的局部空间特征,利用双向门控循环单元(BiGUR)捕捉风速、功率等时间序列的前后向动态依赖关系,并引入注意力机制自适应强化关键时间步的特征权重,从而增强模型对非平稳风电数据的表征能力;进一步,采用OOA算法对模型超参数进行全局寻优,有效提升模型收敛速度与泛化性能。研究基于实际风电场历史数据开展实验验证,结果表明,该方法相较传统模型在预测精度、鲁棒性和误差抑制方面表现更优,适用于高比例可再生能源接入背景下的电力系统调度需求。; 适合人群:从事新能源发电预测、电力系统优化调度、智能算法与深度学习融合应用等方向的科研人员及工程技术人员,尤其适合具备Matlab编程能力、熟悉时间序列建模与深度学习框架的研究者。; 使用场景及目标:①实现风电场短期功率高精度预测,支撑电网安全稳定调度与能量管理;②为深度学习模型结构设计与智能优化算法联合调参提供实践范例;③推动人工智能技术在可再生能源预测、智能电网运行等领域的落地应用。; 阅读建议:建议结合提供的Matlab代码深入理解CNN-BiGUR-Attention网络架构搭建、注意力机制实现方式及OOA优化流程,重点关注数据预处理、模型训练与参数调优细节,可通过替换不同风电数据集进行对比实验,进一步掌握模型迁移能力与适应性。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧