社区
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()中动态申请内存,主函数中要用到申请的内存,请问在用完后怎样释放?
...全文
67
11
打赏
收藏
关于内存释放的问题
char *init() { char *p=(char *)malloc(52*4*sizeof(char)); ...... return p } void main() { char (*Arr)[4]; Arr=init(); } 在init()中动态申请内存,主函数中要用到申请的内存,请问在用完后怎样释放?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
指向一个空的
内存
泄露Demo leaky app
当我们谈论“
内存
泄露Demo leaky app”时,我们指的是一个应用程序在使用
内存
后未能正确
释放
它,导致系统资源的浪费和可能的性能
问题
。下面将详细讨论
内存
泄露、其对应用程序的影响以及如何检测和修复
内存
泄露。 ...
iframe
内存
释放
问题
随着Ajax的发展,使用javascript的RIA应用越来越多,用户在同一页面中驻留的时间越来越长,
内存
泄露和
内存
占用
问题
越来越值得RIA开发者的注意,当RIA应用中
内存
得不到合理的
释放
,
内存
使用量会持续上涨,造成RIA应用...
map的
内存
释放
参考链接:关于c++中map的
内存
占用
问题
(原文)原文提到map在erase和clear后不会立马
释放
内存
,而是采用类似
内存
池的机制,对申请的
内存
进行”预留“,在一段时间内不使用才会予以“
释放
”。 &...
python opencv3会自动
释放
内存
吗_【OpenCV】有关
内存
释放
的一些
问题
1、
内存
泄露
内存
泄露是说没有
释放
已经不能使用的
内存
,这里一般指堆的
内存
才需要显示的
释放
。比如用malloc,calloc,realloc,new分配的
内存
是在堆上的,需要用free,delete显示的回收。
内存
泄露最明显的一是程序很...
freeRTOS
内存
释放
问题
vPortFree
今天在看别人代码的时候,发现一个
问题
,在不同的地方把一个指针指向的
内存
释放
了两次,但是程序运行是正常的。 虽然运行没出错误,但是程序的逻辑是有
问题
的。 所以我写了下面的语句测试了一下 vPortFree(pbuf);...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章