忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

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

プログラムの警告を消そう

コンパイルした時に、警告出ていませんか?
もし出ていたとして大量に出ている場合、その中に埋もれている重要な警告を見過ごす可能性があります。

ひとつの危険な関数を説明します。(短めの記事です)

拍手[0回]



// 危険な関数
int* sum(int a,int b)
{
 int k=a+b;
 return &k;
}


関数内でローカル変数kを作成し、そのアドレスをリターンしています。
int kはsum関数が呼び終えると消滅しますが、
そのkのアドレスをリターンすると、
消滅した領域を指しているポインタをリターンしている事になり変な値が入っている可能性があります。

コンパイラは関数内で作った
ローカル変数のアドレスをリターンしようとした時に警告を発してくれます。


この重要な警告がfloatからintなどの警告に埋もれてしまう可能性があります。
なので、キャストなどを利用して警告は常に0にすべきです。

fscan_s
fopen_s
などの関数は
#pragma warning(disable:4996)
とヘッダに書くことで4996の警告を表示しないなどもできます。
これをfloat→intで出る警告を表示しないなどはしないほうがいいです。


冬休みがもう少しで始まります。
風邪など引かないように冬休み楽しみましょう。
byリーダ和田
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]