Hoi,
Ik ben bezig een OS X framework te ontwikkelen, in C++, maar nu loop ik tegen toch iets heel vaags aan. Het gaat om de volgende situatie:
We hebben een framework, Core.framework. Daarin zitten een stel classes waaronder een singleton class met cached data. Eventjes wat versimpelt:
StaticCache.h
StaticCache.cpp
Naast dit framework heb ik een test client gemaakt die het framework gebruikt. Maar nu is het afhankelijk wat ik doen voor dat ik GetInts aanroep dat de boel gewoon crashed.
Volgens mij kan ik in dit stukje gewoon echt geen memory overschrijven, want er komen verder eigenlijk geen pointers aan te pas, alleen dingen die op de stack worden gealloceerd (kan je weinig aan fout doen denk ik). Klopt mijn idee over frameworks überhaupt wel?? Is het wel mogelijk om een singleton class te hebben in een framework en dat in een programma te gebruiken?
Nu bedacht een collega van me dat dit zeer inefficiënt kan worden (er worden immers wat kopieën gemaakt), dus hij zei gebruik dan een reference. Maar dan krijg ik weer link errors op die functie (unknown symbol), misschien weer een ander verhaal, maar misschien ook wel gerelateerd.
Overigens lijkt het framework wel verder goed te werken, want ik heb meerdere dingen kunnen testen voordat ik op het GetInts principe kwam...
Ik ben bezig een OS X framework te ontwikkelen, in C++, maar nu loop ik tegen toch iets heel vaags aan. Het gaat om de volgende situatie:
We hebben een framework, Core.framework. Daarin zitten een stel classes waaronder een singleton class met cached data. Eventjes wat versimpelt:
StaticCache.h
C++:
1
2
3
4
5
6
7
8
9
10
| namespace Core { class StaticCache { public: static StaticCache *GetInstance(); std::vector<int> GetInts() const; }; } |
StaticCache.cpp
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #include "StaticCache.h" Core::StaticCache *Core::StaticCache::GetInstance() { static Core::StaticCache sInstance; return &sInstance; } std::vector<int> Core::StaticCache::GetInts() const { std::vector<int> ints; ints.push_back( 1000); return ints; } |
Naast dit framework heb ik een test client gemaakt die het framework gebruikt. Maar nu is het afhankelijk wat ik doen voor dat ik GetInts aanroep dat de boel gewoon crashed.
Volgens mij kan ik in dit stukje gewoon echt geen memory overschrijven, want er komen verder eigenlijk geen pointers aan te pas, alleen dingen die op de stack worden gealloceerd (kan je weinig aan fout doen denk ik). Klopt mijn idee over frameworks überhaupt wel?? Is het wel mogelijk om een singleton class te hebben in een framework en dat in een programma te gebruiken?
Nu bedacht een collega van me dat dit zeer inefficiënt kan worden (er worden immers wat kopieën gemaakt), dus hij zei gebruik dan een reference. Maar dan krijg ik weer link errors op die functie (unknown symbol), misschien weer een ander verhaal, maar misschien ook wel gerelateerd.
Overigens lijkt het framework wel verder goed te werken, want ik heb meerdere dingen kunnen testen voordat ik op het GetInts principe kwam...
[ Voor 4% gewijzigd door ^Mo^ op 02-07-2008 09:46 ]
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs