在纯C语言里的字符串怎样能更好地封装和管理内存,像C++一样

(1)在C里的字符串最麻烦的就是内存问题,用数组分配多了浪费,分配少了溢出,如果频繁使用free()malloc()又太过低效。(2)在C++中可以在类的构造和析构函数中... (1)在C里的字符串最麻烦的就是内存问题,用数组分配多了浪费,分配少了溢出,如果频繁使用free()malloc()又太过低效。
(2)在C++中可以在类的构造和析构函数中分配内存,但C没有这种机制,这使得很多时候溢出和泄露的事情频频发生
展开
 我来答
zhjiemm
2012-11-18 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:723万
展开全部
在纯C 的环境中,没有C++类的封装处理。内存的分配和释放只能靠自己来进行。就是在C++的类中,也是要同样的要自己管理内在的申请和分配的,只不过你可以在类的构建和析构中书写,方便一点而已。
内存的使用原则:
1,谁申请,谁释放。
2,使用前要判断指针是否有效。
3,释放后要对指向内存的指针赋值为NULL。

另外:free(),malloc()效率 不低。
追问
如果每一次修改字符串内容都重新分配的话,就是用realloc函数或者重新分配一段内存然后复制过去,是很影响效率的。有什么让空间占用和效率能平衡的算法吗
追答
可以这样来平衡:
先申请一定大小的内存,比如100个字节,如果复制的字符串小于100就不用重新申请,如果大于,那就重新申请一个更大的内存空间,每次重新申请内存空间的大小比原来的大一倍。
hello812293858
2012-11-18 · TA获得超过749个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:349万
展开全部
内存分配在C里面的确是没办法的了。只能靠你自己分配。所以说为什么C++的STL是安全的就是如此。它的string类非常安全,自动为你分配和释放内存。这一切的工作原理都不用担心。所以为什么C++比C好就是这个原因。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
点点点循环
2012-11-18 · TA获得超过256个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:87.2万
展开全部
使用队列和栈管理指针数据就可以了,多练练就行,迟早要换C++的,不必研究太深,不然做不出应用型程序,你总不会和系统打交道去做操作系统吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mu326668629
2012-11-18 · 超过18用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:51.2万
展开全部
自己实现一个内存管理吧。。
可以先申请一大块内存。然后自己定义结构管理起来吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式