在纯C语言里的字符串怎样能更好地封装和管理内存,像C++一样
(1)在C里的字符串最麻烦的就是内存问题,用数组分配多了浪费,分配少了溢出,如果频繁使用free()malloc()又太过低效。(2)在C++中可以在类的构造和析构函数中...
(1)在C里的字符串最麻烦的就是内存问题,用数组分配多了浪费,分配少了溢出,如果频繁使用free()malloc()又太过低效。
(2)在C++中可以在类的构造和析构函数中分配内存,但C没有这种机制,这使得很多时候溢出和泄露的事情频频发生 展开
(2)在C++中可以在类的构造和析构函数中分配内存,但C没有这种机制,这使得很多时候溢出和泄露的事情频频发生 展开
展开全部
在纯C 的环境中,没有C++类的封装处理。内存的分配和释放只能靠自己来进行。就是在C++的类中,也是要同样的要自己管理内在的申请和分配的,只不过你可以在类的构建和析构中书写,方便一点而已。
内存的使用原则:
1,谁申请,谁释放。
2,使用前要判断指针是否有效。
3,释放后要对指向内存的指针赋值为NULL。
另外:free(),malloc()效率 不低。
内存的使用原则:
1,谁申请,谁释放。
2,使用前要判断指针是否有效。
3,释放后要对指向内存的指针赋值为NULL。
另外:free(),malloc()效率 不低。
追问
如果每一次修改字符串内容都重新分配的话,就是用realloc函数或者重新分配一段内存然后复制过去,是很影响效率的。有什么让空间占用和效率能平衡的算法吗
追答
可以这样来平衡:
先申请一定大小的内存,比如100个字节,如果复制的字符串小于100就不用重新申请,如果大于,那就重新申请一个更大的内存空间,每次重新申请内存空间的大小比原来的大一倍。
展开全部
内存分配在C里面的确是没办法的了。只能靠你自己分配。所以说为什么C++的STL是安全的就是如此。它的string类非常安全,自动为你分配和释放内存。这一切的工作原理都不用担心。所以为什么C++比C好就是这个原因。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用队列和栈管理指针数据就可以了,多练练就行,迟早要换C++的,不必研究太深,不然做不出应用型程序,你总不会和系统打交道去做操作系统吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己实现一个内存管理吧。。
可以先申请一大块内存。然后自己定义结构管理起来吧
可以先申请一大块内存。然后自己定义结构管理起来吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询