banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Một sự thú vị về bộ nhớ động trong class  XML
  [Programming]   Một sự thú vị về bộ nhớ động trong class 02/01/2008 23:11:44 (+0700) | #1 | 107733
[Avatar]
zThienLongz
Member

[Minus]    0    [Plus]
Joined: 29/08/2006 10:09:05
Messages: 104
Location: World
Offline
[Profile] [PM] [WWW]
Mình có đoạn code:
Code:
#include"iostream"
using namespace std;
class Foo{
int i;
public:
Foo(){
cout<<this<<endl;
}
};
int main(){
Foo foo[4];
return 0;
}

Chương trình sau khi complie và chạy thì thu đc kết quả sau:
0xbfe24e04
0xbfe24e08
0xbfe24e0c
0xbfe24e10

Câu hỏi: Tại sau các địa chỉ ko cách đều nhau???
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 03/01/2008 04:21:37 (+0700) | #2 | 107800
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Cách đều nhau đấy chứ?
Code:
04 + 4 = 08;
08 + 4 = 0c;
0c + 4 = 10;
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 04/01/2008 09:16:03 (+0700) | #3 | 108161
[Avatar]
zThienLongz
Member

[Minus]    0    [Plus]
Joined: 29/08/2006 10:09:05
Messages: 104
Location: World
Offline
[Profile] [PM] [WWW]
hix có lẽ tại em nhìn nhầm số trong hệ hex sang hệ dec
hì hì Sorry
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 04/01/2008 11:33:50 (+0700) | #4 | 108193
TQN
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
[Profile] [PM] [WWW] [Yahoo!]
Ừ, mà tại sao lại cách 4 byte vậy zThienLongz ?
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 04/01/2008 12:23:03 (+0700) | #5 | 108214
gái quê
Member

[Minus]    0    [Plus]
Joined: 22/11/2007 12:52:14
Messages: 12
Offline
[Profile] [PM]
@TQN: Cái này hình như liên quan đến memory alignment, trong họ x86 giá trị địa chỉ có độ dài 4 byte ? nên con trỏ this khi in ra nó cách nhau 4 byte một do phải nhảy cóc liên tiếp từng nấc trên stack ? Mà mỗi nấc cách nhau 4 byte ??
Hình minh họa


Có gì sai bác TQN cứ chỉ dạy, đừng tiếc lời smilie
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 04/01/2008 12:49:40 (+0700) | #6 | 108221
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
@gái quê:

Cái này là do thằng int trong foo. sizeof(int) = 4. Bồ thử thay thằng int đó bằng char, hoặc cái gì đó khác sẽ thấy "khoảng cách" thay đổi.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 04/01/2008 16:46:24 (+0700) | #7 | 108288
[Avatar]
zThienLongz
Member

[Minus]    0    [Plus]
Joined: 29/08/2006 10:09:05
Messages: 104
Location: World
Offline
[Profile] [PM] [WWW]
vì sizeof(int) =4 cái này là tùy vào hệ điều hành. VD như Windows và Linux thì kich thước kiểu int là 4 byte còn trên nên DOS thì là 2 byte
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 04/01/2008 17:14:22 (+0700) | #8 | 108289
[Avatar]
secmask
Elite Member

[Minus]    0    [Plus]
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
[Profile] [PM] [WWW]
bản bồ đang dùng chắc là 16 bít, class Foo có 2 thành phần là :
int i --> 2 byte
1 method <-> function pointer --> 2 byte
=> tổng lại thành 4 byte để lưu trữ cho 1 object từ class Foo.
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 05/01/2008 04:02:29 (+0700) | #9 | 108337
gái quê
Member

[Minus]    0    [Plus]
Joined: 22/11/2007 12:52:14
Messages: 12
Offline
[Profile] [PM]
@Fal: sory cậu, lúc trả lời "phiêu" quá nên nhầm smilie
[Up] [Print Copy]
  [Question]   Re: Một sự thú vị về bộ nhớ động trong class 05/01/2008 06:04:44 (+0700) | #10 | 108354
[Avatar]
zThienLongz
Member

[Minus]    0    [Plus]
Joined: 29/08/2006 10:09:05
Messages: 104
Location: World
Offline
[Profile] [PM] [WWW]
ạc Đang trong C++ mà liên quan gì tới java.
ngoài ra mọi người vào đây xem http://forum.vnoss.org/viewtopic.php?id=5577 để hiểu thêm đôi chút
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|