初めまして。
少し不思議に感じたことがありましたので、
質問をさせて頂きました。
calloc,mallocでメモリを確保した後、
freeで開放した後にもう一回そこの値を
参照してみると、まだ値を保持している
ようなのですが、これは見た目だけ・・・
でちゃんと開放されているのでしょうか?
一応試してみたテストコードを以下に示します。
#include "DxLib.h"
#include <stdlib.h>
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1) return (-1);
SetDrawScreen(DX_SCREEN_BACK);
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
int *test, *p;
test = (int*)calloc(5, sizeof(int));
p = test;
for(int i=0; i<5; i++)
{
*p = i;
p++;
}
printfDx("%d,", test[4]); //4になる
free(test); //メモリを開放
printfDx("%d,", test[4]); //無関係な数値になるはず?
ScreenFlip();
WaitKey();
}
DxLib_End() ;
return 0 ;
}
(開発環境はVisual C++ 2005 Express Edition)
結果は 4,4 となりました。
DXライブラリを使わない
普通のプログラムで同じことをすると、
4,-5339383 等と、開放した後は無関係な数値に
なるようです。
タスクマネージャーのメモリーの使用量を
見る限りでは、無限にメモリの使用量が
上がっていくことは無いので、
開放はちゃんとされているとは
思うのですが・・・。
読みづらくて申し訳ありませんが、
よろしければご解答お願いしますm(_ _)m