ヒープ領域とは、プログラム実行時に動的にメモリを割り当てるための領域
ヒープ領域は関数が終わっても存在することができ、所有者が居なくなった時点で解放される
struct Point { x: i32, y: i32, } fn main(){ let p: Box<Point> = Box::new(Point {x:100, y:200}); println!("{} {}", p.x, p.y); }
new演算子、std::vectorはヒープ領域を使用している。
#include <iostream> #include <limits> #include <exception> int main() { std::cout << std::hex << std::numeric_limits<uintptr_t>::max() << std::end; try { char* temp= new char[std::numeric_limits<uintptr_t>::max()]; std::cout << temp << "\n"; } catch(std::bad_alloc& e){ std::cout << e.what() << "\n"; } return 0; }
#include <iostream> #include <limits> #include <exception> int main() { int* array = new int[5]; for(int i = 0; i < 5; ++i){ array[i] = i*i; } delete[] array; array = nullptr; return 0; }
いまいちboxの使い所と書き方がわかりませんな…