[Hangout] Stack, Heap, boost::xxx

  • 0
    いいね
  • 0
    コメント
    この記事は最終更新日から1年以上が経過しています。

    Stack

    stack.cpp
    int* stack_a(){
        int *x;
        return x;
    }
    
    int main()
    {   
        std::cout << *stack_a() << std::endl;
    }
    

    output

    [1]    2595 segmentation fault  ./a.out
    

    How can we make it works?

    Heap

    Easiest way is to just use heap memory. But in practice you should do consider recursive algorithm which is able to keep value.

    heap.cpp
    int* heap_a(){
        int *x = new int;
        return x;
    }
    
    int main()
    {   
        std::cout << *heap_a() << std::endl;
    }
    

    output

    0
    

    boost::scoped_ptr

    int* scoped_ptr(){
        boost::scoped_ptr<int> x;
        return x;
    }
    
    int main()
    {
        std::cout << *scoped_ptr() << std::endl;
    }
    

    equality to stack_a