Accessing memory error

May 31, 2020 at 5:43pm
Hello,

I am writing a program and it is compiled without any error. However, when I run that program, it is showing the error below.

1
2
3
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)


How can I solve that problem?
May 31, 2020 at 5:54pm
Your app ran out of memory.
Without seeing the code it's difficult to tell.
May 31, 2020 at 6:31pm
Even if my main is simple like the following codes, it is still showing the same error message.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "simulator.h"
#include <thread>
#include <vector>
#include <iostream>

void printThread(const std::shared_ptr<Simulator> &sim)
{
    while(true)
    {
        Pose aircraftPose = sim->getFriendlyPose();
        std::cout << "printed" << std::endl;
    }
}

int main(void)
{
  std::vector<std::thread> threads;
  std::shared_ptr<Simulator> sim(new Simulator());
  threads.push_back(sim->spawn());
  
  threads.push_back(std::thread(printThread, sim));

  for(auto & t: threads){
    t.join();
  }

  return 0;
}
May 31, 2020 at 10:17pm
Based on the posted code there's no way to tell if this is a constructed thread object

 
threads.push_back(sim->spawn())


You can also try using

1
2
3
4
for(auto & t: threads){
if(t.joinable())
 t.join();
 }


Edit also try using emplace_back()
Last edited on May 31, 2020 at 10:18pm
May 31, 2020 at 10:57pm
getFriendlyPose() is being called in an infinite loop. Is it allocating but not deallocating memory (directly or indirectly)?
Topic archived. No new replies allowed.