Lots of mallocs in my gnuradio block is it safe?

Hi,
I am writing the code for a gnuradio block and I use a lot of dynamic
memory
allocation. The code isn’t finished yet but I thought I would ask this
question anyways. For an idea this is how the mallocs look like.

  1. (204 + 5 + 204) gr_complex arrays of size 2046 each
  2. 1 double array of size 2046

The reason why I have this is most of the data allocated in these arrays
is
reused and I don’t have to calculate it again and again. i thought
having
this data ready when the block is initialized will speed up the
processing.

Being pessimistic programmer I am circumspect about my method. What are
your
thoughts?

Thanks,
John

haha! I just realized that this is a great deal of memory used.
25020464.

I am so dumb. :slight_smile:

I guess I will have to calculate this on each iteration i use that data.

It looks like only about 7 MB of memory… (204 + 5 + 204) * 2046 * 8 +
2046

  • 8 = 6,776,352 bytes. It probably won’t play too well with your CPU
    cache,
    but that still shouldn’t be too much, right?

Also, since you only need to calculate once, I assume you will be
mallocing
these arrays only once (e.g. in the constructor)… if you’re not
mallocing
every time general_work is called, it should be even less of a problem.
I
myself haven’t had to malloc more than about 1MB of arrays in a block,
though, but I think it may be worth trying out.

Kunal