社区
C语言
帖子详情
分配内存
xgbing
博客专家认证
2007-05-21 10:24:57
假如我这样写:
typedef char* BUF
BUF p;
p=GetBUF();
.........
BUF GetBUF()
{
BUF tmp;
tmp=(char *)malloc(10);
return tmp;
}
tmp是分配在栈上的,这样写不安全,
要实现这样一个BUF GetBUF()要怎么写?
...全文
188
11
打赏
收藏
分配内存
假如我这样写: typedef char* BUF BUF p; p=GetBUF(); ......... BUF GetBUF() { BUF tmp; tmp=(char *)malloc(10); return tmp; } tmp是分配在栈上的,这样写不安全, 要实现这样一个BUF GetBUF()要怎么写?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xgbing
2007-05-21
打赏
举报
回复
谢谢各位,学了很多了
dnboy
2007-05-21
打赏
举报
回复
最好不要这样写,容易忘记释放内存
todototry
2007-05-21
打赏
举报
回复
注意返回值类型BUF与BUF&即可,okokok
todototry
2007-05-21
打赏
举报
回复
什么样不安全呢,
BUF& GetBUF()
{
BUF tmp;
tmp=(char *)malloc(10);
return tmp;
}
这样的不安全,因为返回一局部变量的引用,而局部变量在返回之后已经出栈的
todototry
2007-05-21
打赏
举报
回复
tmp这个指针变量是分配在栈上,但它指的内存,分配在堆上的
tmp在函数返回之后无效了,但是你的返回值是一个值拷贝,外层变量p拿
到了这个值,所以通过p完全可以安全的使用堆内存,记得之后释放
星羽
2007-05-21
打赏
举报
回复
管它什么,类也好 malloc 就是堆上的,记得free 就是了
freshui
2007-05-21
打赏
举报
回复
安全 只要记得适当时候free这块内容即可
bargio_susie
2007-05-21
打赏
举报
回复
木问题。。。
xgbing
2007-05-21
打赏
举报
回复
谢谢,
BUF是一个类的话,也是在堆上的吗?
星羽
2007-05-21
打赏
举报
回复
malloc 堆上的
alloca 栈上的
星羽
2007-05-21
打赏
举报
回复
- -!
堆上的,安全的
Matlab预
分配内存
预
分配内存
简介:对于for,while循环,在循环的过程中每次不断的增加数据结构的大小,影响了性能和内存的使用。重复的调整数据的大小需要Matlab花费额外的时间寻找更大的连续内存块,并且将现在的数组移动到连续的...
为什么要动态
分配内存
?什么时候需要动态
分配内存
?
问:为什么要动态
分配内存
答1:因为内存太宝贵。 答2:如果全部是静止内存不能释放,对于小的程序可以运行完毕。但是对于大的程序,还没运行完,内存就要被占用完,此时就要发生内存泄露。 答3:给定一个占用...
动态
分配内存
——new/delete
动态
分配内存
1.使用new
分配内存
2.使用delete释放内存 1.使用new
分配内存
使用格式: new 数据类型 new 经常和指针一起使用,指针真正的用武之地就是在运行阶段指向未命名的内存以存储值。 eg:在运行阶段为一个int...
malloc 是如何
分配内存
的?
malloc 是如何
分配内存
的? malloc 分配的是物理内存吗? malloc(1) 会分配多大的内存? free 释放内存,会归还给操作系统吗? free() 函数只传入一个内存地址,为什么能知道要释放多大的内存? 发车! Linux 进程...
我的世界java 内存_我的世界如何
分配内存
如果你玩的是新版本的Minecraft,那么你可以从启动器里直接
分配内存
(RAM)。如果你使用的是旧版本,那么你需要创建一些文件来改变Minecraft内存使用量。如果你运行了Minecraft服务器,那么分配更多的内存能够有效提高...
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章