社区
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()中动态申请内存,主函数中要用到申请的内存,请问在用完后怎样释放?
...全文
124
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
打赏
举报
回复
指向一个空的
内存
泄露Demo leaky app
内存
泄露Demo leaky app
C/C++指针经典资料大全
C/C++指针经典资料大全,十余部经典资料书籍,是您精通C指针的理想教程。
关于堆
内存
和栈
内存
释放
js 中的
内存
分为堆
内存
和 栈
内存
堆
内存
:存储引用类型值 (对象:键值对 函数:代码字符串) 栈
内存
: 提供JS代码执行的环境和存储基本类型值 堆
内存
释放
让所有引用堆
内存
空间地址的变量赋值给Null 即可 (没有变量占用这个堆
内存
了 浏览器会在空间的时候把它
释放
掉) 栈
内存
释放
一般情况下,当函数执行完成,所形成的私有作用域(栈
内存
)都会自动
释放
掉 (在栈
内存
中存储的值也都会被
释放
掉,但...
java和C#
内存
释放
释-调用C++的
内存
释放
释放
问题
本文讨论java和C#调用C++写的动态库 的
内存
问题
,前提是C++写的动态库没有
内存
泄漏
问题
,c++的
内存
问题
不在本章讨论的范围之类。
问题
场景为:C++调用直接测试调用没
内存
泄漏,跑很长时间都可以,但是java和C#调用的时候就是运行一段时间后就
内存
涨起来了,也不能很好的降下去,直到
内存
崩溃。 目前java调用C++无非使用JNI调用,C#可以使用com组件或者 dllimp...
iframe
内存
释放
问题
随着Ajax的发展,使用javascript的RIA应用越来越多,用户在同一页面中驻留的时间越来越长,
内存
泄露和
内存
占用
问题
越来越值得RIA开发者的注意,当RIA应用中
内存
得不到合理的
释放
,
内存
使用量会持续上涨,造成RIA应用反应变慢甚至会造成用户浏览器崩溃。虽然这种
问题
很少显现,但并不是说明应用中不存在这种
问题
,只不过这些
问题
在用户页面跳转和关闭浏览器时被掩盖掉,当我们RIA应用要用户一直在同一
C语言
70,036
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章