曆史

爲C標准庫容器寫自己的內存分配程序

发布时间:2019-11-02 12:09:40 編輯:筆名

測試程序的源碼如下:

// MyStl.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include <map>

#include <vector>

#include <string>

#include <utility>

#include <iostream>

#include "MyAlloc.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

happyever ::InitShm();

multimap<string,int,less<string>,happyever ::MyAlloc<string> > m;

m.insert(make_pair(string("Harry"), 32));

m.insert(make_pair(string("Mary"), 59));

m.insert(make_pair(string("Roger"), 18));

m.insert(make_pair(string("Nancy"), 37));

m.insert(make_pair(string("Mary"), 23));

typedef multimap<string,int,less<string>,happyever ::MyAlloc<string> >::iterator Iter;

for (Iter p = m.begin(); p != m.end(); p++)

{

cout << p->first << "," << p->second << endl;

}

Iter p = m.find("Harry");

m.erase(p);

/*p = m.find("Harry");

cout << "Harry is: " << p->second << "." << endl;*/

for (Iter p = m.begin(); p != m.end(); p++)

{

cout << p->first << "," << p->second << endl;

}

return 0;

}

以上程序在vs2005,vc6上测试通过。使用MinGW编译的时候只需要去掉vc的预编译头文件#include “stdafx.h”即可。

以上程序只要稍微修改,就可以實現共享內存的管理,可以方便的使用標准庫提供的容器。加上信號量的鎖機制。

以上爲了學習而改寫的SGI的stl二級分配算法實現的。以上代碼存在一定的局限性。我另外完整實現了共享內存管理的STL標准的alloctor程序,使用posix信號量加鎖。目前應用在aix的xlC編譯環境下。因爲源碼涉及公司的商業秘密,所以不能公開。但基本上以上源碼已經體現了自己管理內存的完整思路,供這方面需求的朋友一起學習研究用。

查看本文來源

牛皮癬患者日常應怎樣養護如何保護皮膚才能康複快
禿頂可以做植發嗎?植發能夠堅持多久不掉呢?
熊瑛
銀屑病檢查
深圳口腔正畸醫院
手机在线电影在线电影