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