荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Dreamer (我与萤火虫), 信区: SoftDev
标  题: 【C++】[FAQ]C和C++风格的内存分配/释放可以混用吗?
发信站: 荔园晨风BBS站 (Sun Jun 13 12:15:42 2004), 站内信件


Q: C和C++风格的内存分配/释放可以混用吗?
A: 可以——从你可在一个程序中同时使用malloc()和new的意义上而言。
不可以——从你无法delete一个以malloc()分配而来之对象的意义上而言。你也无
法free()或realloc()一个由new分配而来的对象。

C++的new和delete运算符确保构造和析构正常发生,但C风格的malloc()、
calloc()、free()和realloc()可不保证这点。而且,没有任何人能向你担保,
new/delete和malloc/free所掌控的内存是相互“兼容”的。如果在你的代码中,
两种风格混用而没有给你造成麻烦,那我只能说:直到目前为止,你是非常幸运的
 :O)

如果你因为思念“美好的老realloc()”(许多人都思念她)而无法割舍整个古老
的C内存分配机制(爱屋及乌?),那么考虑使用标准库中的vector吧。例如:

// read words from input into a vector of strings:

vector<string> words;
string s;
while (cin>>s && s!=".") words.push_back(s);


Vector会按需要自动增长的。
我的《Learning Standard C++ as a New Language》一文中给出了其它例子,可
以参考。




--
如果你真的爱萤火虫,你就不应该将她困在瓶子里;
如果你真的爱萤火虫,你应该放开她,让她在天空中自由自在地飞!
虽然你会不舍得她,但是最终你就会明白这样你才真正拥有了她!

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.223]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店