Redian新闻
>
c++中,对象的实例都被分配在HEAP里 这个概念对么?
avatar
c++中,对象的实例都被分配在HEAP里 这个概念对么?# JobHunting - 待字闺中
H*7
1
c++中,对象的实例都被分配在HEAP里 这个概念对么?
avatar
b*n
2
不对,不过 java 好像是这样的

【在 H******7 的大作中提到】
: c++中,对象的实例都被分配在HEAP里 这个概念对么?
avatar
H*7
3
那能简单说说C++里是怎么弄得么

【在 b******n 的大作中提到】
: 不对,不过 java 好像是这样的
avatar
V*B
4
C++好像复杂多了
就看在哪生成instance的

【在 H******7 的大作中提到】
: 那能简单说说C++里是怎么弄得么
avatar
r*o
5
这个和C不一样吗?

【在 V******B 的大作中提到】
: C++好像复杂多了
: 就看在哪生成instance的

avatar
j*u
6
not familiar with Java but I don't think so
Java also has value type which usually goes to stack (wo/ boxing), correct?
Value type is also object.

【在 b******n 的大作中提到】
: 不对,不过 java 好像是这样的
avatar
s*u
7
不一定,只有当用pointer的时候,object instance才在heap里。

【在 H******7 的大作中提到】
: c++中,对象的实例都被分配在HEAP里 这个概念对么?
avatar
p*s
8
c++ 里,variable在哪,实例就在哪。
java里面,primitive type在variable里,reference type的variable从stack指到
heap的实例
隐约记得是这样。 谁来确定确定
avatar
y*i
9
是只有用new操作符分配的对象实例才在heap里。
如果在函数里写:
string s, *ps = &s;
这个还是在stack里。
必须string *ps = new string;
才在heap里

【在 s*********u 的大作中提到】
: 不一定,只有当用pointer的时候,object instance才在heap里。
avatar
M7
10
我觉得你说的java是对的。
C++里面new出来的对象都是在heap里。其他都在stack里。是不是这样?

【在 p*****s 的大作中提到】
: c++ 里,variable在哪,实例就在哪。
: java里面,primitive type在variable里,reference type的variable从stack指到
: heap的实例
: 隐约记得是这样。 谁来确定确定

avatar
y*i
11
补充一下,除了placement new取决于buffer被分配的位置

【在 y**i 的大作中提到】
: 是只有用new操作符分配的对象实例才在heap里。
: 如果在函数里写:
: string s, *ps = &s;
: 这个还是在stack里。
: 必须string *ps = new string;
: 才在heap里

avatar
M7
12
placement new....
这个不常用的吧?

【在 y**i 的大作中提到】
: 补充一下,除了placement new取决于buffer被分配的位置
avatar
y*i
13
面试中还是经常考的

【在 M7 的大作中提到】
: placement new....
: 这个不常用的吧?

avatar
M7
14
在java or C#中有类似placement new这样的功能吗?

【在 y**i 的大作中提到】
: 面试中还是经常考的
avatar
f*y
15
感觉你是对的
primitive type的变量存在stack里
reference type的variable名存在stack里,其内容也就是reference指向的instance存
在heap里

【在 p*****s 的大作中提到】
: c++ 里,variable在哪,实例就在哪。
: java里面,primitive type在variable里,reference type的variable从stack指到
: heap的实例
: 隐约记得是这样。 谁来确定确定

avatar
j*u
16
Not sure about Java... does Java has boxing/unboxing also?
if so, primitive (value) type could be in the heap as well:
object o = 1234;
besides boxing, there're other cases that value type does not live in the st
ack, an exmaple is array of value type.
int[] myArray; // all int value of the array lives in the heap.
So, it is not accurate to say "value type goes to the stack, reference type
goes to the heap".
also, there is no variable "name" in the stack, it is actually an address (x
86: 4 bytes, x64: 8 bytes) that points to the begining of the memory block f
or the object in the heap.

【在 f*******y 的大作中提到】
: 感觉你是对的
: primitive type的变量存在stack里
: reference type的variable名存在stack里,其内容也就是reference指向的instance存
: 在heap里

avatar
y*i
17
我只会c ,不会java和C#

【在 M7 的大作中提到】
: 在java or C#中有类似placement new这样的功能吗?
avatar
V*B
18
和java不一样
C就没有object

【在 r****o 的大作中提到】
: 这个和C不一样吗?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。