動きが部分的におかしくなる要因
以前はアドバイスありがとうございました。
配列オーバーフロー?
http://okwave.jp/qa4406037.html
以前のプログラムで以下を暗号化→解読化すると元通りにはならず、
6,8,64,66,67,68行目だけがおかしくなります。
明らかにその行に無い文字が交じってきたりしますが、
初期化はしておりますし、他の行は大丈夫なのに
何故この行だけがおかしくなるのか(暗号化の時点で既におかしいです)
わかりません。
同じ作り込みをしていて、一部分だけ動きがおかしくなるのは
どういった理由があるのでしょうか?
特に周期性は見られません。
↓下の行から1行目
#define MAX_MOJI 250 /* ファイルNAME */
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char ch;
double d1;
float fl;
short sh;
int in;
long ln;
} testcell;
char c1;
char ch2[2];
char ch3[3];
double d;
testcell t;
char c2;
char c3;
long ln;
float fl;
char *p;
static int st;
void main( void );
void func( int );
void main( void ){
char* alc = malloc( 1000 );
func( 100 );
printf( "\nメイン\n" );
printf( "allocated addr : %p\n", alc );
printf( "func() addr : %p\n", func );
printf( "main() addr : %p\n", main );
printf( "addr of printf : %p\n", printf );
printf( "char c1 %2d : %p\n", sizeof(c1), &c1 );
printf( "char ch2[2] %2d : %p\n", sizeof(ch2),ch2 );
printf( "char ch3[3] %2d : %p\n", sizeof(ch3),ch3 );
printf( "double d %2d : %p\n", sizeof(d), &d );
printf( "testcell t %2d : %p\n", sizeof(t), &t );
printf( "char c2 %2d : %p\n", sizeof(c2), &c2 );
printf( "char c3 %2d : %p\n", sizeof(c2), &c3 );
printf( "long ln %2d : %p\n", sizeof(ln), &ln );
printf( "float fl %2d : %p\n", sizeof(fl), &fl );
printf( "char *p %2d : %p\n", sizeof(p), &p );
printf( "static int st %2d : %p\n", sizeof(st), &st );
printf( "\nコウゾウタイ\n" );
printf( "char ch %2d : %p\n", sizeof(t.ch), &t.ch );
printf( "double d1 %2d : %p\n", sizeof(t.d1), &t.d1 );
printf( "float fl %2d : %p\n", sizeof(t.fl), &t.fl );
printf( "short sh %2d : %p\n", sizeof(t.sh), &t.sh );
printf( "int in %2d : %p\n", sizeof(t.in), &t.in );
printf( "long ln %2d : %p\n", sizeof(t.ln), &t.ln );
}
void func( int p ){
static int s;
int loc;
printf( "\nファンクション\n" );
printf( "parameter addr : %p\n", &p );
printf( "func static addr : %p\n", &s );
printf( "func local addr : %p\n", &loc );
}
お礼
ありがとうございます。