社区
C语言
帖子详情
关于内存释放的问题
myyan
2004-01-16 08:46:47
char *init()
{
char *p=(char *)malloc(52*4*sizeof(char));
......
return p
}
void main()
{
char (*Arr)[4];
Arr=init();
}
在init()中动态申请内存,主函数中要用到申请的内存,请问在用完后怎样释放?
...全文
140
11
打赏
收藏
关于内存释放的问题
char *init() { char *p=(char *)malloc(52*4*sizeof(char)); ...... return p } void main() { char (*Arr)[4]; Arr=init(); } 在init()中动态申请内存,主函数中要用到申请的内存,请问在用完后怎样释放?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ccwwcsdnc
2004-01-16
打赏
举报
回复
这样做:
main ()
{ float **f=NULL;
f = alloc2float(80,60); //申请二维数组f[60][80],注意参数次序;
if(f==NULL){ printf("alloctet error!\n"); exit(); }
.....
free2float(f);
}
/* allocate a 2-d array of floats */
float **alloc2float(size_t n1, size_t n2)
{
return (float**)alloc2(n1,n2,sizeof(float));
}
/* free a 2-d array of floats */
void free2float(float **p)
{
free2((void**)p);
}
/* allocate a 2-d array */
void **alloc2 (size_t n1, size_t n2, size_t size)
{
size_t i2;
void **p;
if ((p=(void**)malloc(n2*sizeof(void*)))==NULL)
return NULL;
if ((p[0]=(void*)malloc(n2*n1*size))==NULL) {
free(p);
return NULL;
}
for (i2=0; i2<n2; i2++)
p[i2] = (char*)p[0]+size*n1*i2;
return p;
}
/* free a 2-d array */
void free2 (void **p)
{
free(p[0]); //释放时,一维一维的释放,与申请时的次序相反。
free(p);
}
aph
2004-01-16
打赏
举报
回复
char (*Arr)[4];
Arr[0] = init();
free(Arr[0]);
应该这样吧!
myyan
2004-01-16
打赏
举报
回复
就这样吧。
本来我用栈内存分配,函数结束后就没有了,每次都是乱码,可能是栈内存释放后容易被抹掉,或者栈内存释放后又变回原来的值了。而堆内存不容易去掉,尤其是大内存的机器,要等用到的时候才能抹掉。
weimj
2004-01-16
打赏
举报
回复
free就释放了,一时还可以用也很正常,因为free并没有把数据抹掉,只是标志内存可以再次被分配.
格兰特杨
2004-01-16
打赏
举报
回复
要不然这样,但不确定。实际上free后是可能取到数据的,除非在free前用memset清零。
char (*Arr)[4];
Arr=init();
for (i = 0; i< 52; i++)
{
free Arr[i];
}
建议你把Arr声明成 char **Arr可能会好些。
big_d
2004-01-16
打赏
举报
回复
free(Arr);
Arr=NULL;
myyan
2004-01-16
打赏
举报
回复
我想创建的是二维数组,使用Arr指向函数中的内存,本来觉得以为可以释放掉,但是
释放后通过指针还可以取到数据。不知道有没有释放成功。
格兰特杨
2004-01-16
打赏
举报
回复
这里声明成Arr为指向char数组的指针...。//而不是char指针的数组。
根据怎样申请就怎样释放的原则,不适用delete,直接free(Arr)我觉得就可以!
讨论!
dddd8888
2004-01-16
打赏
举报
回复
你这样写就不对
victor_cui
2004-01-16
打赏
举报
回复
free(Arr)即可
workhand
2004-01-16
打赏
举报
回复
指向一个空的
【OpenCV】有关
内存
释放
的一些
问题
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的
问题
。这里小小总结一下自己遇到的麻烦。 1、
内存
泄露
内存
泄露是说没有
释放
已经不能使用的
内存
,这里一般指堆的
内存
才需要显示的
释放
。比如用malloc,calloc,realloc,ne
LabVIEW 中
内存
释放
相关
问题
在LabVIEW 编程领域,
内存
管理是一个关键且复杂的议题。我们常常关注 LabVIEW 如何将
内存
释放
回操作系统(OS),以及是否有方法确保在特定数据结构(如队列、变体属性、动态数据引用 DVR 等)销毁、删除或清空后,LabVIEW 能
释放
未使用的
内存
资源。这不仅关系到程序的性能,还涉及系统的整体稳定性。
python opencv3会自动
释放
内存
吗_【OpenCV】有关
内存
释放
的一些
问题
前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的
问题
。这里小小总结一下自己遇到的麻烦。1、
内存
泄露
内存
泄露是说没有
释放
已经不能使用的
内存
,这里一般指堆的
内存
才需要显示的
释放
。比如用malloc,calloc,realloc,new分配的
内存
是在堆上的,需要用free,delete显示的回收。
内存
泄露最明显的一是程序很慢,在运行程序时你可以启动任务管理器,会看到程序...
关于QTableWidget的item所占
内存
的
释放
问题
关于QTableWidget中的数量众多的item所占
内存
比较多,用完要
释放
的
问题
。 现在有两个
问题
: 1 是什么时候
释放
? 2 如何
释放
我们先看第一个
问题
,因为我现在的程序里面是定期刷新table,每次加载大量的数据,所以如果不清除之前的
内存
,就会使
内存
一直申请得不到
释放
最终导致
内存
泄露。当次显示完就
释放
显然不合适,因为item被delete掉后表中的内容就也不见了,因为指向的内...
内存
释放
问题
内存
释放
问题
今天做Android项目的时候出现一个崩溃的
问题
,该崩溃
问题
的崩溃日志如下: signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x3d206578 r0 e5848200 r1 e5859274 r2 0000002c r3 3d20657a r4 00c80000 r5 009a0000 r6 e...
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章