忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024年04月29日09:09 】 |
メモリー食いの対応3
メモリーの再利用。

結果は×。


ストックした、メモリーのアドレスを再利用したが、タスクマネージャーで監視すると増加している。つまり、malloc()のメモリ確保とは別のところで消費しているのか・・?




//------------------------------------
// nodeスタック
// free()するところのメモリーアドレスを保存し
// 再利用する
//------------------------------------
typedef struct _NODE_STOCK{
int addr_oya;
int addr_ch;
}NODE_STOCK;
 
#define NODE_STOCK_CNT   10000


//要らなくなったメモリーアドレスをストックし後で再利用する
void free_node(int addr, int sw){
int i;
 
//ストックする空きがあるか?
if( sw == 1 && node_stock_cnt_oya > NODE_STOCK_CNT )return; //保存出来ない。
if( sw == 2 && node_stock_cnt_ch  > NODE_STOCK_CNT )return; //保存出来ない。
 
// [0] [1] [2]   <--node_stock_cnt_oya
//  1   2   3   
 
if(sw == 1){
if(node_stock_cnt_oya < 0)node_stock_cnt_oya = 0;
i = node_stock_cnt_oya;
 
node_stock[i].addr_oya = addr;
node_stock_cnt_oya++;
node_stock_cnt_oya3++;
printf("%d stock address[%d] = %d, %d\n", sw, node_stock_cnt_oya, node_stock[i].addr_oya, node_stock_cnt_oya3);
}else{
if(node_stock_cnt_ch < 0)node_stock_cnt_ch = 0;
i = node_stock_cnt_ch;
 
node_stock[i].addr_ch  = addr;
node_stock_cnt_ch++;
node_stock_cnt_ch3++;
printf("%d stock address[%d] = %d, %d\n", sw, node_stock_cnt_ch,  node_stock[i].addr_ch, node_stock_cnt_ch3);
}
 
 
}

 

//--------------------------------
// 親の構造体にセット
//--------------------------------
NODE* list_oya_set(NODE *no, char* node, int WHO, BORD *bord, int cnt){
 
 NODE *c=NULL, *p=NULL;
 
if(node_stock_cnt_oya > 0){
c = (NODE*)node_stock[node_stock_cnt_oya - 1].addr_oya;
node_stock_cnt_oya--;
printf("call stock oya %d %d %d\n", c, node_stock_cnt_oya2, node_stock_cnt_oya);node_stock_cnt_oya2++;
}else{
c = (NODE*)malloc(sizeof(NODE));
memset(c, 0, sizeof(NODE));
printf("call malloc oya %d\n", node_stock_cnt_malloc_oya);node_stock_cnt_malloc_oya++;
}
 


ーーーー
1 stock address[1] = 24934472, 1  ← アドレス24934472をストックし
1 stock address[2] = 24933360, 2
1 stock address[3] = 24932248, 3
1 stock address[4] = 3799896, 4
1 stock address[5] = 3798784, 5
1 stock address[6] = 3797672, 6
1 stock address[7] = 3796560, 7
1 stock address[8] = 3795448, 8
1 stock address[9] = 3794336, 9   ← アドレス3794336をストックし
2 stock address[1] = 24919376, 1
2 stock address[2] = 24920248, 2
2 stock address[3] = 24921120, 3
2 stock address[4] = 24921992, 4
2 stock address[5] = 24922864, 5
2 stock address[6] = 24923736, 6
2 stock address[7] = 24924608, 7
2 stock address[8] = 24925480, 8
2 stock address[9] = 24926352, 9
1 stock address[10] = 24935584, 10   ← アドレス24935584 をストックし
call stock oya 24935584 0 9   ← アドレス24935584 を再利用。
call stock ch 24926352 0 8
call stock ch 24925480 1 7
call stock ch 24924608 2 6
call stock oya 3794336 1 8   ← アドレス3794336 を再利用。
call stock ch 24923736 3 5
call stock ch 24922864 4 4
call stock ch 24921992 5 3
call stock ch 24921120 6 2
call stock ch 24920248 7 1
call stock ch 24919376 8 0
call malloc ch 48
call malloc ch 49
call malloc ch 50
call stock oya 3795448 2 7
call stock oya 3796560 3 6
call stock oya 3797672 4 5
call stock oya 3798784 5 4
call stock oya 3799896 6 3
call stock oya 24932248 7 2
call stock oya 24933360 8 1
call stock oya 24934472 9 0  ← アドレス24934472を再利用。

 

PR
【2012年04月27日11:59 】 | 未選択 | コメント(0)
コメントの投稿













前ページ | ホーム | 次ページ

忍者ブログ [PR]