洛基的记忆小对象分配器

Loki's SmallObjAllocator of of memory

本文关键字:对象 分配器 记忆 洛基      更新时间:2023-10-16
#include "stdafx.h"                            //In order to use Visual C++
#include <iostream>
#include <LokiSmallObj.h>                    //The header file to manage
                                              // smalls objects allocator
class MySmallObj : public Loki::SmallObjAllocator    //inherit from the base
                                                     //class SmallObjAllocator 
{
public:
    MySmallObj():SmallObjAllocator(sizeof(char), sizeof(long),0){};
};
int _tmain(int argc, _TCHAR* argv[])
{
    MySmallObj * premier = new MySmallObj;                                                      //declaring my object derived from smallobjallcator
    char * myChar = static_cast<char*>( premier->Allocate(1, true));            //calling allocate from my object and conveting the void pointer to char*
    premier.Deallocate(myChar, 1);
    return 0;
}

loki库实质上使用c++中的泛型编程我已经得到了代码在那里使用内存的小对象分配器(Loki::SmallObjAllocator)我正在使用visual c++ 2010

我得到这些错误:

  >  MyLoki.cpp
1>MyLoki.obj : error LNK2019: unresolved external symbol "public: void __thiscall Loki::SmallObjAllocator::Deallocate(void *,unsigned int)" (?Deallocate@SmallObjAllocator@Loki@@QAEXPAXI@Z) referenced in function _wmain
1>MyLoki.obj : error LNK2019: unresolved external symbol "public: void * __thiscall Loki::SmallObjAllocator::Allocate(unsigned int,bool)" (?Allocate@SmallObjAllocator@Loki@@QAEPAXI_N@Z) referenced in function _wmain
1>MyLoki.obj : error LNK2019: unresolved external symbol "protected: __thiscall Loki::SmallObjAllocator::SmallObjAllocator(unsigned int,unsigned int,unsigned int)" (??0SmallObjAllocator@Loki@@IAE@III@Z) referenced in function "public: __thiscall MySmallObj::MySmallObj(void)" (??0MySmallObj@@QAE@XZ)

我已经找到了第一个问题的答案。

#include "stdafx.h"                            //In order to use Visual C++
#include <iostream>
#include <LokiSmallObj.h>                    //The header file to manage
                                              // smalls objects allocator
class MySmallObj : public Loki::SmallObjAllocator    //inherit from the base
                                                     //class SmallObjAllocator
{
public:
    MySmallObj():SmallObjAllocator(sizeof(char), sizeof(long),1){};  //the chunkSize < maxObjsize
};
int _tmain(int argc, _TCHAR* argv[])
{
    MySmallObj * premier = new MySmallObj;                                                      //declaring my object derived from smallobjallcator
    char * myChar = static_cast<char*>( premier->Allocate(1, true));            //calling allocate from my object and conveting the void pointer to char*
    premier->Deallocate(myChar, 1);
    return 0;
}

多个

错误

未解析的外部符号

是因为Loki的SmallObj.cpp没有包含在项目中

例如Loki::SmallObjAllocator,这里的Loki::SmallObject