質問投稿でgooポイントが当たるキャンペーン実施中!!>>

libjpegを使ってアプリを配布しようとしているのですが
libjpegがライセンス表示をしなくてはいけないのは
知っているのですが、その肝心の表示するテキスト文書が
見つかりません。
http://www.ijg.org/

ご存じの方がいましたらご教授願います。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

README 内の、「LEGAL ISSUES」の段落には、


「英語」(plain English)と「法律語」(legalese)の二種類の記述があり、
legaleseの方では、
---
(2) If only executable code is distributed, then the accompanying
documentation must state that "this software is based in part on the work of
the Independent JPEG Group".
---
とありますので、"this software is based in part on the work of the Independent JPEG Group" と表示するのが確実です。

もっとも、Englishの方では
---
3. You may not pretend that you wrote this software. If you use it in a
program, you must acknowledge somewhere in your documentation that
you've used the IJG code.
---
とありますので、この文面を正確にそのまま使わなくても、
「IJG のコードを使っています」と日本語で書いてあっても問題ないかと思います。
    • good
    • 0
この回答へのお礼

困ったいたので本当に助かりましたm(___)m
ありがとうございました!

お礼日時:2009/08/09 00:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qファイルやディレクトリの存在確認を行う方法

ファイルをオープンするのはfopenでOKですが、ファイルやディレクトリの存在確認を行う方法が知りたいです。

何か組み合わせて作るものなのでしょうか?
perlとか便利な演算子があるのですが、C/C++って器用ではないですね。
これは処理系?依存の内容ですか?

私の環境は VC6, VC2005 Windows2000です。

Aベストアンサー

int access(const char* path, int mode);
int stat(const char* path, struct stat* sb);

かな?
MSDN を引くと _access_s() を使えとか書いてあるけど。

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

QCStringからchar*への型変換について教えてください。

以前の質問に

int型 → CString型/char型

がありましたが、

CString型をchar*型に変換する方法を
教えていただければありがたいです。

MSDNで「LPCTSTRキャスト」が説明されていましたが、
例が載ってないのでよくわかりませんでした。

よろしくお願いします。

Aベストアンサー

目的にもよりますが一時的にchar配列として使いたいならCString::GetBuffer()が利用できます。
char配列としての利用が終わったらCString::ReleaseBuffer()する必要がありますが。

直接CString内の文字列を扱う必要があるならCString::operator LPCTSTRで文字列ポインタが得られます。
ただし、CStringオブジェクトをいじると無効ポインタなる可能性があるので気をつけてください。

MSDNのMicrosoft Foundation Classリファレンス→CString→クラスメンバで確認してください。

Qアプリケーション終了時例外エラー(アクセス違反)の調査方法について

大変困っています。

アプリケーションが終了するときに「アクセス違反」がワトソン博士によって取得されています。
当方アプリケーションなどに弱く、解決策の想像が付きません。どなたかご教授お願いいたします。

<解決策例>
・どういったスキルを持った人にどの様な調査を進めさせれば良いのか。。。
・以前同様な事があり原因は○○だった
・恐らく○○だろう
 など、お願いいたします。

<ユーザ報告>
処理終了し、画面が消えたところでワトソン博士のメッセージが表示された

<ログ抜粋>
例外番号c0000005(アクセス違反)

ファンクション:RtlDestroyHeap
~略~
フォールト → 77f6d672 8908 mov [eax],ecx ds:09000001=00000000

<備考>
開発環境:MSVC6.0
動作環境:Windows NT4.0 SP6a
発生頻度:2回/年
使用頻度:2~3回/(平日)

以上、よろしくお願いします。

Aベストアンサー

発生頻度が年2回というのはなかなか厳しい条件ですね。

さて・・・

「私であれば、次の手順で調査を行います。」という書き始めで延々とデバッグ方法を書いていたのですが、書き終わってからちょっとGoogleで検索したら、ひょっとするとちょうど質問者さんのトラブルと同じかもしれない現象がMicrosoftのKBにありました。

場所はここです: http://support.microsoft.com/kb/168006/ja

要点をかいつまんで書くと、MSVCRT/MFCのDLLのバージョン不整合でエラーが発生することがある、という内容です。KB自体は特定のアプリケーションについて書かれていますが、記述されている現象と原因の関係から考えるに、他のアプリケーションでも同様の現象が発生すると思われます。

さてさて。

せっかく書いた文章を捨てるのがもったいないので(貧乏性)、邪魔かもしれませんが下に続けることにします。もし上のKBの内容がそれらしいようであれば、読み飛ばしてください。

========

私であれば、次の手順で調査を行います。

1. MAPファイル、CODファイル作成

「ワトソン博士のログを取得した際に実行していたEXEファイル」をビルドした際、一緒にMAPファイルやCODファイル(リスティングファイル)を作成していれば、そのファイルを用意しておきます。

もし作成していない場合は、「ワトソン博士のログを取得したEXEファイル」と、バイナリレベルで全く同じEXEファイル(バイト単位で比較すると、ファイルに埋め込まれたタイムスタンプ・チェックサム以外は一致する)が作成可能かどうか調べます。(ビルドに必要なソースファイルやビルドオプションに変更を加えていなければ作成可能です。)

作成可能であれば、コンパイルオプションに「リスティングファイルタイプ:マシン語コードとソースを含む」、リンクオプションに「MAPファイル作成」を追加してEXEを再作成してください。これで、「ワトソン博士のログを取得した際に実行していたEXEファイル」に対応するMAPファイルとCODファイルが得られます。

2. エラー発生行を特定

ワトソン博士のログがどれだけ取れているかにもよりますが、スタックダンプが含まれていればたいていエラー発生行を特定できます。

まず「フォールト->」が含まれる逆アセンブルリストを探します。次に、その下にある「スタックバックトレース」を探します。

スタックバックトレースを上から下に順にたどっていくと、そのうち「ReturnAd」(リターンアドレス)がアプリケーションのアドレス範囲(VC++6の標準オプション設定を変更していなければ0x00400000~)に入るところが出てきます。見つかったら、そのアドレスの直前にあるcall命令が例外を発生させたAPIを直接呼び出している場所です。

さて、仮にリターンアドレスが0x00401234だったとします。そうしたら、次はMAPファイルを見てこのアドレスがどの関数に属しているか探します。ちょうど0x00401234というアドレスは見つからないでしょうけれども、これに近いアドレスは見つかるはずです。そのアドレスに対応する関数名もMAPファイルにあります。

次はその関数名をCODファイルから探します。見つかったら、MAPファイルにあるアドレスがCODファイルにあるマシン語コードの先頭アドレスになるので、そこからリターンアドレス0x00401234に対応するはずの場所まで順番にアドレスを辿っていきます。関数の先頭アドレスが0x00401200であれば、0x34バイト先を探すわけです。

そうすると、その探した場所にある命令の直前の命令がcall命令になっているはずです。CODファイルには、その場所のC++ソースでの行番号とソース文もコメントとして入っているはずなので、あとは対応するソースをよーく見てエラーの見当をつけてください。

アセンブラの知識があれば、そこでcallを使った(他の関数を呼び出した)ときの引数の内容もある程度分かります。(ポインタ渡しだと、そのポインタの先の内容までは分かりませんが。)

3. 置き換え用EXEファイルと対応するMAPファイル作成

これ以降は将来への備えです。

コンパイルオプションでデバッグ情報を「プログラムデータベースを使用」、リスティングファイルタイプを「マシン語コードとソースを含む」、リンクオプションで「MAPファイルを作成する」、デバッグ情報「他の種類」を追加してビルドし、出来たEXEファイルを本番用として使用します。同時に作成されるMAPファイル、CODファイル、PDBファイルは保管しておきます。

MAPファイル、CODファイルの使い方は上記2.のとおりです。PDBファイルは、もし完全なクラッシュダンプが取得できればWinDbgを使って事後ソースレベルデバッグが可能になりデバッグ作業が非常に楽になるので、念のため取っておきます。

4. ワトソン博士のオプション変更

drwtsn32.exeを起動し、「クラッシュダンプファイルの作成」をチェックします。(デフォルトは、チェックが入っています。)

クラッシュダンプファイルとEXEとPDBがあればWinDbgで事後ソースレベルデバッグができます。(いわゆるポストモーテムデバッグです。UNIX系でコアダンプしたコアをデバッガで読み込んでデバッグするのと同じ種類のものです。)


普段何とも思わずに行っていることでも、文章にすると長いですね・・・

えーと、「どういうスキルを持った人に調査させればいいか」については、上記の内容を読んで『なるほど!』と言える人でしょうか。

参考URL:http://support.microsoft.com/kb/168006/ja

発生頻度が年2回というのはなかなか厳しい条件ですね。

さて・・・

「私であれば、次の手順で調査を行います。」という書き始めで延々とデバッグ方法を書いていたのですが、書き終わってからちょっとGoogleで検索したら、ひょっとするとちょうど質問者さんのトラブルと同じかもしれない現象がMicrosoftのKBにありました。

場所はここです: http://support.microsoft.com/kb/168006/ja

要点をかいつまんで書くと、MSVCRT/MFCのDLLのバージョン不整合でエラーが発生することがある、という内容です。KB...続きを読む

QC ファイル出力で、フォルダがない場合でも作成する方法

先日、皆さんに教えていただき

Cで出力ファイルを指定のフォルダに出す方法が上手く出来ました。
具体的には、↓こうやって指定しました。
sprintf( buff, "%s\\%s", path, filename );

やっていて思ったのですが、
この方法だと、指定フォルダが最初から無いとエラーが出てしまいます。
フォルダが無かったら、作成し、その中にファイルを出力していってくれる。という方法はできるものなのでしょうか?

もしできるようなら教えて下さい!!
よろしくお願いします!

Aベストアンサー

★回答ではないが余談。
・koko_u_ さんありがとう。
 気づくとアンダーバーの関数名で置き換わっているみたいですね。
 他にも気づくといろいろ置き換わっていますね。
 C 関数、最近使っていないのでアンダーバーの関数名で調べてみます。
・ありがとうございました。

●質問者さんへ。
・_mkdir() 関数が使える場合はその関数でもフォルダ(ディレクトリ)が作成できます。
 それでは。

参考URL:http://www5c.biglobe.ne.jp/~ecb/c/12_14.html

Qスレッド処理からダイアログを表示するには?

Windows XPとVC++ 6.0で
時間のかかる大量の計算をするプログラムを作っています。

計算部分はスレッド処理にして
進捗ダイアログ(CDialogにCProgressCtrlを貼り付けたもの)
を表示します。

・CWinAppのInitInstanceで計算処理開始(AfxBeginThread)
・計算処理内で進捗ダイアログをCreate
・計算の進み具合によって進捗ダイアログのプログレスバーを更新

上記の流れではうまくいっていたのですが
以下のように変更したところ、進捗ダイアログをCreateするところで
プログラムが応答なしになってしまうようになりました。

・メインダイアログ(モーダル)
・メインダイアログのAボタンクリックでダイアログAを開く(モーダル)
・ダイアログAの実行ボタンクリックで計算処理開始(AfxBeginThread)
・計算処理内で進捗ダイアログをCreate
・計算の進み具合によって進捗ダイアログのプログレスバーを更新

MFC Wizardでダイアログベースで作成、MFCの共有DLLを使用しています。

モーダルダイアログ→スレッド→CDialog.Createに
制限があったりするのでしょうか。
どうかご教授ください。

Windows XPとVC++ 6.0で
時間のかかる大量の計算をするプログラムを作っています。

計算部分はスレッド処理にして
進捗ダイアログ(CDialogにCProgressCtrlを貼り付けたもの)
を表示します。

・CWinAppのInitInstanceで計算処理開始(AfxBeginThread)
・計算処理内で進捗ダイアログをCreate
・計算の進み具合によって進捗ダイアログのプログレスバーを更新

上記の流れではうまくいっていたのですが
以下のように変更したところ、進捗ダイアログをCreateするところで
プログラムが応答なしになっ...続きを読む

Aベストアンサー

スレッドを作成した側の待機処理ループの中にメッセージポンプを作成してやればよさそうですよ

pThread->ResumeThread();
do {
  AfxGetApp()->PumpMessage();
} while( WaitForSingleObject( pThread->m_hThread, 0 ) != WAIT_OBJECT_0 );
といった具合で …

メインスレッド寝てしまっているので反応無しになるのかも

Qaptでインストールしたプログラムはどのディレクトリに?(Ubuntu)

Ubuntuを使っています。

aptでインストールしたプログラムはどのディレクトリにインストールするのでしょうか?また、aptでインストールしたプログラムを確認する方法(どんなプログラムをインストールしたのかを確認する方法)はあるでしょうか?

Aベストアンサー

>aptでインストールしたプログラムを確認する方法

見逃してました。

# dpkg -l

とかで。

QVC++で静的リンクしたアプリを作りたい

Microsoft のVisual Studio 2012 を使用しています。VC++2012 を使用して静的リンクしたアプリケーションを作りたいのですが、静的リンクを行う設定方法がわかりません。言い換えると .Net FrameWork がない環境でも動くアプリケーションを作りたいのです。
詳細は、MSN 相談箱 QNo.8057365(投稿日時 - 2013-04-24 12:53:43)を参照ください。
現在は、次のMSDNの技術資料「Deployment in Visual C++」
http://msdn.microsoft.com/ja-jp/library/dd293574.aspx
に記載されている2番目の方法Local Deployment(ローカル配置)に記載されている必要な DLL ファイルをコピーする方法で実現していますが、Microsoft に相談したところ、次のように言われています。

『VC++ 2012 のLocal Deployment を使ってアプリケーション プログラムの開発を行うのは良いが、一旦開発が成功した後はLocal Deployment の使用を禁止する。』

以上の経緯から、静的リンクした VC++ 2012 アプリケーション プログラムを作る必要があります。具体的な形態は、Windows PE 3 で起動したPC でVC++ 2012 で開発したアプリケーション プログラムを動かします。
Visual Studio 2012 でプロジェクトを定義するとき、「静的リンク アプリケーション」指定の必要があると考えるのですが、その方法がわかりません。どうかご教示をお願いします。

Microsoft のVisual Studio 2012 を使用しています。VC++2012 を使用して静的リンクしたアプリケーションを作りたいのですが、静的リンクを行う設定方法がわかりません。言い換えると .Net FrameWork がない環境でも動くアプリケーションを作りたいのです。
詳細は、MSN 相談箱 QNo.8057365(投稿日時 - 2013-04-24 12:53:43)を参照ください。
現在は、次のMSDNの技術資料「Deployment in Visual C++」
http://msdn.microsoft.com/ja-jp/library/dd293574.aspx
に記載されている2番目の方法Local Deployment(ロ...続きを読む

Aベストアンサー

>(1)静的リンク=マルチスレッド の発想ができません。キーワードを指定してのヘルプ検索のヒントをご教示ください。

VCの以前からの流儀…ですからねぇ…。
「VC 静的リンク」で検索するとランタイムライブラリの設定を変更する。と紹介されているページが見つかるでしょう。
で、設定を変更する際のメニューなどの操作手順を解説しているページも見つかるかと。
ネット上に情報はあるのですから、そのように「調べる手順」は身につけておいた方がいいかと。

>(2)「上級者用の設定」の文言も気がかりです。見つけ方を教えてください。

VS2010の頃はあったのですが、VS2012でも存在するのかどうかは不明です。
MicrosoftのサイトだとVS2012 ExpressEditionにはあるかのような記述がありましたが、
手元の「VS Express for Desktop」には無いんですよねぇ…。
# http://msdn.microsoft.com/ja-jp/library/vstudio/038tzxdw.aspx の
# 「1.[デバッグ] メニューの [例外] をクリックします」にあるメモに。

>(3)良い参考書があればご教示ください。

人によって変わるでしょうから本屋で立ち読みしながら探して下さい。としか言えないですね。
ただし、今回の場合はMFC(ExpressEditionにはない)ならともかく.NET Frameworkは使えませんので、少々古いバージョン辺りの本になるかも知れません。
.NET Frameworkメインで記述されている本では今回の目的には沿わないでしょう。
# Win32APIプログラミングとかそういうのでしょうかね…。

私の環境にはVS Express for Desktopはインストールしてありますが…
もっぱら使っているのはVS2010 ExpressEdition(C++かC#)です。
MFCが必要とかの場合は製品版を所持しているVS2005になってしまいますが。
そんなワケで2012はほとんど使っていません。
# メイン環境もまだWindows7ですし。(仕事中はXPですからVS2012も動きませんしね)

>(1)静的リンク=マルチスレッド の発想ができません。キーワードを指定してのヘルプ検索のヒントをご教示ください。

VCの以前からの流儀…ですからねぇ…。
「VC 静的リンク」で検索するとランタイムライブラリの設定を変更する。と紹介されているページが見つかるでしょう。
で、設定を変更する際のメニューなどの操作手順を解説しているページも見つかるかと。
ネット上に情報はあるのですから、そのように「調べる手順」は身につけておいた方がいいかと。

>(2)「上級者用の設定」の文言も気がかりです。見つけ...続きを読む

QGetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・

お世話になっています。

iniファイルを読込み、各変数に代入するC言語のDLLを作成したいのです。
このサイトの投稿や、MSDNなどにも載っていたのですが、
少し理解に苦しみます。

現在まで、理解した点がwindows.hのインクルードを
記述するところ辺りです。
iniファイルは下記のようなレイアウトです。

---<mst.ini>----------------------------
[user]
name=username
ID=userid
[pc]
pcname=FMV
----------------------------------------

#include<windows.h>は記述することまでは
分かりましたが、以下から進みません。。。

GetPrivateProfileString("")

初心者で申し訳ありませんが、お助け願います。

Aベストアンサー

こんにちは。itohhといいます。

サンプルを載せておきます。

mst.iniファイル内の[user]セクションのnameキーの値を取得する。
DWORD dwLen=0;
char strBuf[100];
dwLen = GetPrivateProfileString("user",       // セクション名
                "name",       // キー名
                "soushi_ni",     // デフォルト値
                strBuf,       // 読み込んだ値を格納するエリア
                sizeof(strBuf),   // 上記のエリアのサイズ
                "mst.ini" );     // iniファイル名

解説:
iniファイル名をフルパスで指定しないとWindowsのディレクトリにあるものと判断されます。
Win9xなら「c:\windows」、WinNT系なら「c:\WinNT」。

[user]セクションのnameキーがないときは、デフォルト値で指定した値が設定させます。

復帰値「dwLen」は実際に設定した値(文字列)の長さが返されます。

こんにちは。itohhといいます。

サンプルを載せておきます。

mst.iniファイル内の[user]セクションのnameキーの値を取得する。
DWORD dwLen=0;
char strBuf[100];
dwLen = GetPrivateProfileString("user",       // セクション名
                "name",       // キー名
                "soushi_ni",     // デフォルト値
                strBuf,       // 読み込んだ値を格納するエリア
             ...続きを読む

Qメモリリークのデバッグ

プログラムの実行時にエラーで停止してしまいます。
数値計算系のプログラムで反復計算を行っています。
数万回反復させても大丈夫なのに100万回くらい反復
計算するとプログラムが停止します。
場合によりパソコンがフリーズします。
メモリ関連が原因であることは想像できるのですが
デバッグの方法がわかりません。計算の途中にでてくる
関数等でつかわれている変数でmallocしたものは全て
解放しているつもりですがどこかおちがあるのかもしれません。オチがある場合どこを解放しわすれているのか
現在つかめていません。

VCをつかっているのですがデバッガを使って実行途中の
メモリの状態を確認する方法など、この問題を解決する
為に有効であると思われる方法をご存じでしたら教えて
ください。

windows2000
visualC++6.0professional
メモリ256MB

Aベストアンサー

ひとことで説明するのは、ちと難しいのですが、VC には、それようの機能が備わっています。
参考URLからたどれるところをじっくりと読んでください。

ある程度大きなプログラムでは、とても有効です。

一連の手順を簡単にまとめると

・ある程度動かしたところで、残っているメモリの一覧を取る
・内容を確認し、解放しているはずかどうかの見当をつける
  ※この時点で、抜けている解放すべき処理の検討がつくことが多い
・解放しているはずのメモリ領域の割り当て番号を控える
・その番号に対してブレークポイントを設定する
・再度実行する
・スタックとレースをたどれば、割り当てている箇所が分かるので、その領域に対して、適切な解放処理を入れる

といった感じの手順の繰り返しになります。

参考URL:http://www.microsoft.com/japan/msdn/library/ja/vsdebug/html/_core_solving_buffer_overwrites_and_memory_leaks.asp


人気Q&Aランキング