Solarisプログラミング教えてチョンマゲ (337レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
148(2): 03/10/30 19:53 AAS
 なんつーか、トラブル気味なので、教えてください。 
 とりあえず、問題はここまで絞り込んだんだけど、 
 ここからがぜんぜんわかりません。 
 Sun.docs.comにこういう話ってでてないよね? 
  
 Solaris9(64bit)で以下のコードのプログラムを動かしたとき、 
 必ずsegmentation faultがおこる。 
  
 struct { 
 inta; 
 shortb; 
 }A; 
 typedef A *PA; 
 int main(){ 
 PApa; 
 intnum=3; 
  
 pa = (PA)malloc(sizeof(PA)*num); 
 pa[0].a = 1;//ここでsegmentation fault 
 return 0; 
 } 
  
 このとき、ILP32ではうまくいくが、LP64(xarch=v9)ではうまくいかない。 
 mallocが問題だと思うんだけど、どう問題なのかがよくわからない。 
 Solaris9の64bitプログラムに詳しい方、ぜひぜひ教えてください。 
 よろしくお願いします。
150(4): 03/10/31 09:17 AAS
 >148 
  
  ぐは。間違えてる。 
  正しいのはこっち。 
  
 > struct { 
 >  int a; 
 >  short b; 
 > }A; 
 > typedef A *PA; 
 > int main(){ 
 >  PA pa; 
 >  int num = 3; 
 >  
 >  pa = (PA)malloc(sizeof(A)*num); 
 >  pa[0].a = 1;//ここでsegmentation fault 
 >  return 0; 
 > } 
  
  ちゃんと構造体の大きさを個数分確保してるんだけど、 
  うまくいかない。32bitだとうまくいって、64bitだとうまく 
  いかない理由がわからない。なんでだろう???
155(4): 03/11/02 18:00 AAS
 >>148 
 こうすればいいんだろ。 
 32bit、64bitどうこう言う前にK&R本が必要では? 
  
 typedef struct { 
     int a; 
     short b; 
 }A; 
  
 typedef A *PA; 
  
 int main(){ 
     PA pa; 
     int num = 3; 
  
     pa = (PA)malloc(sizeof(A)*num); 
     pa[0].a = 1;  //ここでsegmentation fault 
     return 0; 
 } 
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.015s