[C++] オブジェクトのアドレスを表示

オブジェクトのアドレスを表示するコードです。
一言で言えば stati_cast で void のポインタにキャストして stream に渡してるということです。

[cpp title=”ShowAddress.cpp”]
#include <iostream>
#include <vector>

void showAddress() {

std::vector<char> vec(100);

//vectorオブジェクトのアドレスを表示
std::cout << "vec = "
<< static_cast<void *>(&vec)
<< std::endl;

//vector内部で使われているバッファのアドレスを表示
std::cout << "data = " <<
static_cast<void *>(vec.data())
<< std::endl;

// new して確保したchar配列のアドレスを表示
char *chars = new char[100];
std::cout << "chars = " <<
static_cast<void *>(chars)
<< std::endl;
}

int main(){

showAddress();
}
[/cpp]

出力(Mac上のXcodeでビルドし実行)

$ ./ShowAddress
vec   = 0x7fff5fbff6e8
data  = 0x100400100
chars = 0x100400170

vector オブジェクトはスタック上に、vector内部で確保されるバッファとnewで確保したオブジェクトは別のメモリ領域に確保されている様子がみえます。

kaizawa

闘う兼業主夫プログラマー。外資系IT企業所属。C++、Java、Solaris、Oracle、セキュリティ、DLP(Data Loss Prevention)、D&D、空手二段(極真会館)、柔道初段、柔術白帯ストライプ3(トライフォース)。English/中文

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です