社区
C语言
帖子详情
如何申请与释放一个结构
charlyisme
2001-05-16 10:59:00
buf{char* pbuf;
int* ylen;
int len;}
这样为结构申请内存可以吗
buf* kbuf;
kbuf=(buf*)calloc(1,sizeof(buf));
那么,怎样释放这个结构所占的内存呢?
c/c++两种方式有什么不同呢?
呵呵,不懂!请大侠指教!
...全文
137
4
打赏
收藏
如何申请与释放一个结构
buf{char* pbuf; int* ylen; int len;} 这样为结构申请内存可以吗 buf* kbuf; kbuf=(buf*)calloc(1,sizeof(buf)); 那么,怎样释放这个结构所占的内存呢? c/c++两种方式有什么不同呢? 呵呵,不懂!请大侠指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wjzhuang
2001-05-17
打赏
举报
回复
还是使用C++好,有专用的构造函数和虚构函数.在处理类是问题时有很大的优势和便利.
就如火大哥写的那样.
snowrain
2001-05-17
打赏
举报
回复
当然不能直接FREE啦
holyfire
2001-05-17
打赏
举报
回复
最好是专门编写一个函数来处理
Alloc_Buf( buf * b )
{
b = malloc( sizeof( buf ) );
b->pbuf = NULL;
b->ylen = NULL;
b->len = 0;
}
Free_Buf( buf * b )
{
if( b->pbuf )
free( b->pbuf );
if( ylen )
free( b->ylen );
free( b );
}
不然你将结构先释放了,结构内如果有申请了内存,造成这些内存无法释放,这样就会造成内存泄漏
如果使用C++的方法的话,可以使用构造/析构函数
struct buf{
int * pbuf;
int * ylen;
int len;
buf();
~buf();
};
buf::buf()
{
pbuf = NULL;
ylen = NULL;
len = 0;
}
buf::~buf()
{
if( pbuf )
delete [] pbuf;
if( ylen )
delete [] ylen;
}
申请结构的时候
buf * b = new buf;
这时构造函数会被new激活调用
释放的时候
delete b;
这时析构函数会被delete激活调用,你就不用担心内存泄漏了
Edward
2001-05-16
打赏
举报
回复
直接 free(buf); 就可以了。malloc/calloc/realloc 分配的内存用 free 释放。
14.数据
结构
/构造类型
结构
体、共用体相关
定义商品信息:商品名称、商品单件、商品购买个数、商品描述,循环输入购买的商品,按单价排序,输出商品信息,计算最贵的商品已经一共花费多少钱?在create函数中,请实现堆区
申请
5个连续内存;在free_space函数中,实现
释放
堆区内存。在input函数中,请实现循环输入购买的商品;在bubble函数中,请实现按单件排序;在Money函数中,计算共花费多少钱;在Max函数中,计算最贵的商品名称;在output函数中,请实现输出;
hdu2871(线段树区间合并+vector+二分)
题目链接:poj2871
i.MX6ULL驱动开发 | 32 - 手动编写
一个
虚拟网卡设备
,,,)(,,,,1,1)(,,,,)(,,,,,)这两个宏底层调用的函数都是。
结构
体数组可以直接交换吗_数组还能这么用,学到了!
本文授权转载来源:公众号【编程珠玑】ID:shouwangxiansheng作者:守望先生这个问题源于读者在阅读redis源码时的
一个
疑问。先看下面的代码,对于包含动态字符串成员的两个
结构
体Test0和Test1占用空间分别是多少呢?//来源:公众号【编程珠玑】//作者:守望先生#includestructTest0{inta;intb;char*c;};structTest...
【C语言】编程实现
一个
简易学生管理系统(知识点:动态内存
申请
、
结构
体、二级指针)
简单的学习记录。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章