Lambda function capturing and memory usage

Discussion in 'C++' started by Juha Nieminen, Apr 22, 2012.

  1. I was wondering: Does memory usage increase every time that a lambda
    function captures variables, especially if it's then stored into a
    std::function wrapper?

    This question came up when I was thinking about a rather functional
    example usage of lambdas, like this:

    std::function<int(int)> multiplierFunction(int multiplier)
    {
    return [](int value) { return value * multiplier; };
    }

    The above function could be used eg. like:

    auto doubler = multiplierFunction(2);
    auto tripler = multiplierFunction(3);
    auto nMultiplier = multiplierFunction(n);

    std::cout << doubler(5) << " " << tripler(x) << " "
    << nMultiplier(y) << "\n";

    The values '2', '3' and 'n' have to be stored somewhere for (at least)
    as long as 'doubler', 'tripler' and 'nMultiplier' exist. Where are they
    stored and for how long? (Are they freed immediately when those variables
    go out of scope? How?)

    What worries me is the possible memory usage if the above function is
    used eg. in a loop, like:

    for(int i = 0; i < 1000000; ++i)
    {
    auto f = multiplierFunction(i);
    std::cout << f(2) << "\n";
    }

    Does memory usage increase a million-fold, or is the memory recycled after
    each loop?
     
    Juha Nieminen, Apr 22, 2012
    #1
    1. Advertising

  2. Juha Nieminen <> wrote:
    > std::function<int(int)> multiplierFunction(int multiplier)
    > {
    > return [](int value) { return value * multiplier; };
    > }


    Of course I meant:

    return [multiplier](int value) { return value * multiplier; };
     
    Juha Nieminen, Apr 22, 2012
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Roman Suzi
    Replies:
    13
    Views:
    608
    Bengt Richter
    Jan 7, 2005
  2. Sohail Somani
    Replies:
    5
    Views:
    641
    Sohail Somani
    May 7, 2009
  3. Steve Dogers

    lambda vs non-lambda proc

    Steve Dogers, Mar 30, 2009, in forum: Ruby
    Replies:
    1
    Views:
    178
    Sean O'Halpin
    Mar 30, 2009
  4. Juha Nieminen
    Replies:
    6
    Views:
    595
  5. Haochen Xie
    Replies:
    4
    Views:
    245
    Haochen Xie
    Mar 17, 2013
Loading...

Share This Page