Skip to content

Instantly share code, notes, and snippets.

@phuf
Created February 20, 2019 03:33
Show Gist options
  • Save phuf/60a01443fd96beb6c93525c9cde8b0b0 to your computer and use it in GitHub Desktop.
Save phuf/60a01443fd96beb6c93525c9cde8b0b0 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <sstream>
#include <math.h>
#include <memory>
#include <memory.h>
using namespace std;
struct shared_memory {
shared_memory() {
::memset(this, 0, sizeof(shared_memory));
frequency = 88;
}
int frequency;
int rssi;
int bullcrap;
char security[8000];
int security_length;
};
class receiver {
private:
int frequency;
public:
receiver() {
frequency = 99;
}
int get_frequency() {
return frequency;
}
int set_frequency(int value) {
frequency = value;
}
};
class terminal {
private:
std::shared_ptr<::receiver> receiver;
public:
terminal() {
receiver = std::make_shared<::receiver>();
}
std::shared_ptr<::receiver> get_receiver() {
return receiver;
}
};
shared_ptr<::receiver> foo() {
terminal* t = new terminal();
shared_ptr<::receiver> r = t->get_receiver();
cout << "use count " << r.use_count() << endl;
delete t;
cout << "use count " << r.use_count() << endl;
return r;
}
int main() {
shared_ptr<::receiver> r = foo();
cout << r->get_frequency() << endl;
cout << r.use_count() << endl;
shared_ptr<::shared_memory> shared_memory = std::make_shared<::shared_memory>();
cout << shared_memory.use_count() << endl;
cout << shared_memory->frequency << endl;
shared_memory->frequency = 44;
shared_ptr<::shared_memory> shared_memory2 = shared_memory;
cout << shared_memory.use_count() << endl;
shared_memory2 = nullptr;
cout << shared_memory.use_count() << endl;
cout << shared_memory->frequency << endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment