kbcl0_0001
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* kbcl0のページ#1
-(by [[K]],2019.04.27)
** (4) 開発日記#1
-''2019.04.27(土)''
--''[1]'' とりあえずC++に切り替えたらどこまでできるかに挑...
--''[2]'' kclib1のときは「初期化忘れがないかチェックする...
-''2019.04.28(日)''
--''[1]'' このkbcl0では「積み上げ」型の開発を指向している...
--これを回避するために以下の処置をとった。
---(1)まずクラスを継承してstartup対応クラスを作る。
---(2)このstartup対応クラスでは、コンストラクタが複数回呼...
---(3)さらにstartup対応クラスのコンストラクタでは、自分よ...
---(4)もちろんこれをデフォルトの動作にしてしまえば、わざ...
--これはめんどくさいなーと感じたけど、でもまあC言語に戻り...
--''[2]'' テキストファイルを読み込んで、行単位で逆順で表...
#include "kbcl0.h"
#include <stdio.h>
int main()
{
char *s = (char *) kreadFileA("kbcl0.h", "rb", 1 + 2);
KSizPtr sp;
while (*s != '\0')
sp.addPtr(kcutCrLfM(ksgetsA(&s)));
for (int i = sp.s / sizeof (char *) - 1; i >= 0; i--)
puts((char *) sp.getPtr(i));
return 0;
}
--これは結構シンプル!初期化を明示的に書かなくてもよくな...
-''2019.05.09(木)''
--''[1]'' g++を6.3.0にアップデートした。おおこいつは速い...
--そもそもg++をアップデートしようと思ったきっかけは、inli...
--''[2]'' データをどんどんと追記していきたいというケース...
--可変長配列の場合、サイズが大きくなってくるとreallocの際...
--直感的には、追記していくデータのサイズが4バイト程度なら...
--ここまでは直感的にわかるのだけど、ではこの逆転が起きる...
||(1)片方向リスト、KPtrPool使用|(2)KSizPtr、初期サイズ4バ...
|RIGHT:データを 4バイトずつ追加|RIGHT:3.755秒|RIGHT:2.62...
|RIGHT:データを 8バイトずつ追加|RIGHT:4.392秒|RIGHT:3.80...
|RIGHT:データを12バイトずつ追加|RIGHT:5.227秒|RIGHT:6.506...
|RIGHT:データを16バイトずつ追加|RIGHT:6.161秒|RIGHT:7.478...
|RIGHT:データを24バイトずつ追加|RIGHT:8.046秒|RIGHT:12.65...
--こうしてみると、境目は8バイトと12バイトの間にありそうな...
--また(これは当然ではあるが)memcpyが発生しないように初...
--これを踏まえると、結局どうすることがベストなのであろう...
--一方で16バイトを超えるようだと、サイズが大きくなること...
--こうしてみると、KIndexHCでは、ハッシュの衝突が起きた時...
--普通のプログラマはmallocよりも18倍くらい高速なKPtrPool...
-''2019.05.17(金)''
--''[1]'' 結局、私がkbcl0ライブラリでやったことのうちで、...
int my_malloc_n = 0;
void *my_malloc(int size)
{
void *p = malloc(size);
if (p == NULL) {
fprintf(stdout, "my_malloc: out of memory\n");
exit(1);
}
my_malloc_n++;
return p;
}
void my_free(void *p)
{
if (p != 0) {
free(p);
my_malloc_n--;
}
}
--これでまずmy_mallocがヌルポインタを返すことはなくなりま...
--またmallocとfreeの回数を追跡できるので、freeし忘れを検...
--私はこれに相当するものを作って、オブジェクトを多数従え...
--''[2]'' セキュリティ上のうれしいことで[1]以外のことは、...
-''2019.05.22(水)''
--''[1]'' 書きたいコードが決まっているのに、時間がなくて...
//・・・ただ問題は、これだとメモリを開放していないという...
// #include "kbcl0.h"
// #include <stdio.h>
//
// int main()
// {
// {
// KAutoreleasePool ap;
// char *s = (char *) kreadFileA("kbcl0.h", "rb",...
// KSizPtr sp;
// while (*s != '\0')
// sp.addPtr(kcutCrLfM(ksgetsA(&s)));
// for (int i = sp.s / sizeof (char *) - 1; i >= ...
// puts((char *) sp.getPtr(i));
// }
// printf("memory: %d\n", kmalloc.inUse());
// return 0;
// }
//--こうすれば、最後の表示でちゃんと0が表示される。つまり...
//--今回は、同じ関数の中でメモリがちゃんとすべて解放され...
* こめんと欄
#comment
終了行:
* kbcl0のページ#1
-(by [[K]],2019.04.27)
** (4) 開発日記#1
-''2019.04.27(土)''
--''[1]'' とりあえずC++に切り替えたらどこまでできるかに挑...
--''[2]'' kclib1のときは「初期化忘れがないかチェックする...
-''2019.04.28(日)''
--''[1]'' このkbcl0では「積み上げ」型の開発を指向している...
--これを回避するために以下の処置をとった。
---(1)まずクラスを継承してstartup対応クラスを作る。
---(2)このstartup対応クラスでは、コンストラクタが複数回呼...
---(3)さらにstartup対応クラスのコンストラクタでは、自分よ...
---(4)もちろんこれをデフォルトの動作にしてしまえば、わざ...
--これはめんどくさいなーと感じたけど、でもまあC言語に戻り...
--''[2]'' テキストファイルを読み込んで、行単位で逆順で表...
#include "kbcl0.h"
#include <stdio.h>
int main()
{
char *s = (char *) kreadFileA("kbcl0.h", "rb", 1 + 2);
KSizPtr sp;
while (*s != '\0')
sp.addPtr(kcutCrLfM(ksgetsA(&s)));
for (int i = sp.s / sizeof (char *) - 1; i >= 0; i--)
puts((char *) sp.getPtr(i));
return 0;
}
--これは結構シンプル!初期化を明示的に書かなくてもよくな...
-''2019.05.09(木)''
--''[1]'' g++を6.3.0にアップデートした。おおこいつは速い...
--そもそもg++をアップデートしようと思ったきっかけは、inli...
--''[2]'' データをどんどんと追記していきたいというケース...
--可変長配列の場合、サイズが大きくなってくるとreallocの際...
--直感的には、追記していくデータのサイズが4バイト程度なら...
--ここまでは直感的にわかるのだけど、ではこの逆転が起きる...
||(1)片方向リスト、KPtrPool使用|(2)KSizPtr、初期サイズ4バ...
|RIGHT:データを 4バイトずつ追加|RIGHT:3.755秒|RIGHT:2.62...
|RIGHT:データを 8バイトずつ追加|RIGHT:4.392秒|RIGHT:3.80...
|RIGHT:データを12バイトずつ追加|RIGHT:5.227秒|RIGHT:6.506...
|RIGHT:データを16バイトずつ追加|RIGHT:6.161秒|RIGHT:7.478...
|RIGHT:データを24バイトずつ追加|RIGHT:8.046秒|RIGHT:12.65...
--こうしてみると、境目は8バイトと12バイトの間にありそうな...
--また(これは当然ではあるが)memcpyが発生しないように初...
--これを踏まえると、結局どうすることがベストなのであろう...
--一方で16バイトを超えるようだと、サイズが大きくなること...
--こうしてみると、KIndexHCでは、ハッシュの衝突が起きた時...
--普通のプログラマはmallocよりも18倍くらい高速なKPtrPool...
-''2019.05.17(金)''
--''[1]'' 結局、私がkbcl0ライブラリでやったことのうちで、...
int my_malloc_n = 0;
void *my_malloc(int size)
{
void *p = malloc(size);
if (p == NULL) {
fprintf(stdout, "my_malloc: out of memory\n");
exit(1);
}
my_malloc_n++;
return p;
}
void my_free(void *p)
{
if (p != 0) {
free(p);
my_malloc_n--;
}
}
--これでまずmy_mallocがヌルポインタを返すことはなくなりま...
--またmallocとfreeの回数を追跡できるので、freeし忘れを検...
--私はこれに相当するものを作って、オブジェクトを多数従え...
--''[2]'' セキュリティ上のうれしいことで[1]以外のことは、...
-''2019.05.22(水)''
--''[1]'' 書きたいコードが決まっているのに、時間がなくて...
//・・・ただ問題は、これだとメモリを開放していないという...
// #include "kbcl0.h"
// #include <stdio.h>
//
// int main()
// {
// {
// KAutoreleasePool ap;
// char *s = (char *) kreadFileA("kbcl0.h", "rb",...
// KSizPtr sp;
// while (*s != '\0')
// sp.addPtr(kcutCrLfM(ksgetsA(&s)));
// for (int i = sp.s / sizeof (char *) - 1; i >= ...
// puts((char *) sp.getPtr(i));
// }
// printf("memory: %d\n", kmalloc.inUse());
// return 0;
// }
//--こうすれば、最後の表示でちゃんと0が表示される。つまり...
//--今回は、同じ関数の中でメモリがちゃんとすべて解放され...
* こめんと欄
#comment
ページ名: