社区
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++两种方式有什么不同呢?
呵呵,不懂!请大侠指教!
...全文
93
4
打赏
收藏
如何申请与释放一个结构
buf{char* pbuf; int* ylen; int len;} 这样为结构申请内存可以吗 buf* kbuf; kbuf=(buf*)calloc(1,sizeof(buf)); 那么,怎样释放这个结构所占的内存呢? c/c++两种方式有什么不同呢? 呵呵,不懂!请大侠指教!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 释放。
【C++】【内存】系列二:堆内存
申请
与
释放
内存
申请
内存
释放
常见的如:库函数malloc/free、allocate/deallocate,运算符new和delete,后面两对
申请
和
释放
内存实质也是调用了malloc/free,只是做了一些额外的处理。 malloc的分配内存有两个系统调用(不考虑共享内存),
一个
brk,
一个
mmap。一般而言,对于内存小于等于128k的调用brk,大于128k的则调用mmap。其中brk 内存
申请
(小内存
申请
、大内存
申请
) 针对linux 系统 来说有2种
申请
方法 内存池: 小内存申...
结构
体变量内存
申请
与
释放
结构
体是C、C++开发中不可或缺的数据
结构
,往往涉及到函数的入参以及出参等,也必然涉及到参数的初始化。对于字符串往往是需要在堆上开辟一定空间的,本篇文章记录下相关知识!
linux 内核网络 sk_buff 之
申请
和
释放
Ⅲ
目录 1 sk_buff 内存
申请
接口概述 2 sk_buff
申请
__alloc_skb() 3 sk_buff
释放
kfree_skb() 1 sk_buff 内存
申请
接口概述 因为 sk_buff
结构
是比较复杂的(并不是其本身
结构
复杂,而是其所指的数据区以及分片
结构
等,合在一起就变复杂了),所以在内存
申请
和
释放
时,就要搞清楚什么函数对应的
申请
分配或
释放
什么
结构
内存。这里不提倡自己用 kmalloc() 和 kfree() 函数来为 sk_buff 相关
结构
体
申请
内存及销毁,而要用内核提..
malloc和calloc
申请
内存与
释放
、内存池的用法
这些因为需要
申请
内存的时候不知道大小,所以只能
申请
成指针形式的,在uci_getvalue中
申请
的内存,在函数内部没有
释放
,所以在web_wifi_mode_set调用的时候去
释放
。
申请
过的内存一定要
释放
。用calloc在函数内部
申请
的指针return到函数外,然后在另外
一个
函数外
释放
,这种操作是可行的。与malloc唯一的区别是在于calloc在返回地址之前将
申请
的空间全部初始化为0。1、用calloc
申请
的内存如果作为返回值的话,可以在外面
释放
。2、内存的
申请
malloc和calloc。........
动态内存的
申请
和
释放
动态内存的
申请
和
释放
文章目录动态内存的
申请
和
释放
1. malloc() 和 free() 的基本概念以及基本用法1.1 函数原型及说明:1.2 被
释放
的指针1.3 注意事项2. malloc() 到底从哪里得来了内存空间2.1 堆介绍2.2 栈介绍2.3 栈空间和堆空间的使用方式3. malloc() 以及 free() 的机制详解 1. malloc() 和 free() 的基本概念以及基本用...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章