-
-
Save phuf/60a01443fd96beb6c93525c9cde8b0b0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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