您的位置:首页 > 编程语言 > C语言/C++

C++与Java的区别

2016-05-11 15:01 295 查看
毕设写是cocos, 用到的语言自然是C++,之前用的是Java,在写C++时,发现Java把局部变量的概念削弱了(C++ 确实比 Java 难写)

先列出几个定义

栈:函数运行时静态变量存放的地方,由于是静态变量,在编译时就已经给定了。

堆:函数运行时动态变量(即 new malloc),在运行时存放在堆中。

回收:栈的话,在运行这个函数之后,所有空间将被回收。给下一个函数存放。堆的话,除非delete,将一直存在,直到这个程序退出。(其实 内存泄漏,是针对这个程序而言的)

关于栈如下图所示:



运行hello()



运行结束,清空栈相关区域(所谓的“清空“并非清洗,数据仍在,只是置为可写,下次写入即替代掉)



运行world()



运行结束,清空栈相关区域



这就是静态变量,栈之间的关系。

上面有一处值得注意:

stu在运行hello结束之后即被回收,如果我在main中有一变量vector, 在hello中push(stu),执行hello结束后会怎么样呢?

想想如果发生在java上,会是如何?

这就是Java削弱了局部变量的概念,或者说Java将所有变量(至少类变量)都存放在堆上,所以无需考虑这东西

如果觉得有误的地方,欢迎指正。

如果觉得有道理,看在我画图的份上(LibreOffice画的,你懂的),给个赞。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x temp 感悟