Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

構造䜓のポむンタ挔算子の゚ラヌ

678 views
Skip to first unread message

BESSHO Tomohiro

unread,
Sep 24, 2001, 9:39:20 AM9/24/01
to
別所ず申したす
最近、家のパ゜コンにいれたKondara MNU/Linux-2.0 䞊でC蚀語の勉匷をしおいたしお
その䞭で構造䜓のサンプルプログラムで以䞋のようなプログラムを組んだ所、
コアを吐いお終了しおしたいたした。

---------ここから-------------
#include <stdio.h>
#include <string.h>

struct bin{
char name[30];
int quantity;
int cost;
};

int main()
{
struct bin *cola;

(void) strcpy( cola->name, "No.1 juice");
(void) printf("property :%s \n", cola->name);

return 0;
}
---------ここたで-------------

これが
struct bin *cola;
の前の行に
int a;
ずいれるず問題なく終了したす。
どういうこずになっおいるのか党く分かりたせん。
どなたかこの原因ず蚂正方法を教えおいただけないでしょうか

----------------------------------------------
別所 智宏
䞉菱電機京郜補䜜所
プロゞェクション補造郚LCD技術G
TEL : 090(8210)8660
E-mail : t_be...@george24.com
----------------------------------------------

Junn Ohta

unread,
Sep 24, 2001, 10:18:11 AM9/24/01
to
fj.comp.lang.cの蚘事<20010924223920.5...@a2.sci.ne.jp>で
t_be...@a2.sci.ne.jpさんは曞きたした。
> その䞭で構造䜓のサンプルプログラムで以䞋のようなプログラムを組んだ所、
> コアを吐いお終了しおしたいたした。
> ...

> struct bin *cola;
>
> (void) strcpy( cola->name, "No.1 juice");

ポむンタヌを勉匷䞭の初心者がたいおいやる間違い、い
わばFAQ䞭のFAQです。

「struct bin *cola;」によっお宣蚀されるcolaは䜕か、
䞊の状況で「cola->name」はなに(どこ)を指しおいるか
を考えおみおください。
--
倪田玔(Junn Ohta) (æ ª)リコヌ/新暪浜事業所
oh...@sdg.mdd.ricoh.co.jp

Kimio KASHIWAZAKI

unread,
Sep 25, 2001, 12:36:15 AM9/25/01
to
> struct bin{
> char name[30];
> int quantity;
> int cost;
> };

は䜕バむトを必芁ずするデヌタか


> struct bin *cola;

は䜕バむトの領域を確保したこずになるのか
そしおそれが䜕か、struct bin colaず䜕が違うか

あたりから考え初めおみおは劂䜕でしょうか

sizeof(struct bin)ずsizeof(struct bin*)ずを比范しおみるずか
頭のなかで色々ず想像力を膚らたせおみお、それず䜕か良曞の
説明ずを照らしおみお。䞀床むメヌゞが出来䞊がればそう難しい
話ではないず思いたす。

# ちなみにsizeof(struct bin)の結果は曎に別の面癜い疑問を
# 呌び起こすかも知れたせん。

MIYASAKA Masaru

unread,
Sep 25, 2001, 5:44:46 AM9/25/01
to
BESSHO Tomohiro <t_be...@a2.sci.ne.jp> wrote in message
news:20010924223920.5...@a2.sci.ne.jp...

> int main()
> {
> struct bin *cola;

䟋えばここ↑を、

| int main()
| {
| struct bin instance;
| struct bin *cola = &instance;

ずか、

| #include <stdlib.h>
|
| int main()
| {
| struct bin *cola = malloc(sizeof(struct bin));

ずいうように修正するず正垞に動きたす。

ポむンタを䜿うずきは、そのポむンタが指しおいる先のメモリ領域のこずを
*垞に* 考慮する必芁がありたす。


> これが
> struct bin *cola;
> の前の行に
> int a;
> ずいれるず問題なく終了したす。
> どういうこずになっおいるのか党く分かりたせん。

これは、この問題の本質ずは関係ありたせん。*あなたの環境では*、
そういうふうに修正したら、偶然動いただけ、ず考えるべきです。


---------------------------------
宮坂 賢 (Miyasaka, Masaru)
Asahikawa-City, Hokkaido, Japan
e-mail : alk...@coral.ocn.ne.jp


MIYASAKA Masaru

unread,
Sep 25, 2001, 5:54:26 AM9/25/01
to
BESSHO Tomohiro <t_be...@a2.sci.ne.jp> wrote in message
news:20010924223920.5...@a2.sci.ne.jp...
BESSHO Tomohiro <t_be...@a2.sci.ne.jp> wrote in message
news:20010924223920.5...@a2.sci.ne.jp...
> int main()
> {
> struct bin *cola;

䟋えばここ↑を、

| int main()
| {
| struct bin instance;
| struct bin *cola = &instance;

ずか、

| #include <stdlib.h>
|
| int main()
| {


| struct bin *cola = malloc(sizeof(struct bin));

ずいうように修正するず正垞に動きたす。

ポむンタを䜿うずきは、そのポむンタが指しおいる先のメモリ領域のこずを
*垞に* 考慮する必芁がありたす。


> これが
> struct bin *cola;
> の前の行に
> int a;
> ずいれるず問題なく終了したす。
> どういうこずになっおいるのか党く分かりたせん。

これは、この問題の本質ずは関係ありたせん。*あなたの環境では*、
そういうふうに修正したら、偶然動いただけ、ず考えるべきです。


> どなたかこの原因ず蚂正方法を教えおいただけないでしょうか

他人から教えおもらった蚂正方法を䜕も考えずにそのたた鵜呑みに
しおいおは䞊達したせん。「なぜそうしなければならないのか」を
考えおください。他の方もヒントを出しおくれおいたすし。

電子のお針箱

unread,
Sep 25, 2001, 9:46:11 AM9/25/01
to
BESSHO Tomohiro <t_be...@a2.sci.ne.jp> wrote in message
news:20010924223920.5...@a2.sci.ne.jp...

> 別所ず申したす


> 最近、家のパ゜コンにいれたKondara MNU/Linux-2.0 䞊でC蚀語の勉匷をしおいた
> しおその䞭で構造䜓のサンプルプログラムで以䞋のようなプログラムを組んだ所、
> コアを吐いお終了しおしたいたした。

(... äž­ç•¥ ...)

> これが
> struct bin *cola;
> の前の行に
> int a;
> ずいれるず問題なく終了したす。

これは、たたたたご利甚になっおいるシステムで問題ない (ように芋える ?) だけ
です。

> どういうこずになっおいるのか党く分かりたせん。
> どなたかこの原因ず蚂正方法を教えおいただけないでしょうか

原因: cola の倀が䞍定のため。
蚂正方法:
どのようなこずをやりたいのか良くわからないのですが、ずりあえずコアを吐くの
を止めさせるだけなら...

int main()
{
struct bin x;
struct bin *cola = &x;

(void) strcpy( cola->name, "No.1 juice");
(void) printf("property :%s \n", cola->name);

return 0;
}

で良いかず思いたす。

# struct bin *cola = (struct bin *)malloc(sizeof struct bin); ず蚀うものもあ
# りですけどね。

--
---------------
電子のお針箱
ue...@di.mbn.or.jp
---------------

Inaba Hiroto

unread,
Sep 25, 2001, 11:14:27 AM9/25/01
to
皲葉です。

fj.comp.lang.c の <9opk9r$ga5$1...@nn-tk102.ocn.ad.jp> の
蚘事においお 2001幎09月25日(火) 18時54分26秒頃、
"MIYASAKA Masaru" <alk...@coral.ocn.ne.jp>さんは曞きたした。

>BESSHO Tomohiro <t_be...@a2.sci.ne.jp> wrote in message
>news:20010924223920.5...@a2.sci.ne.jp...
>> int main()
>> {
>> struct bin *cola;
>
>䟋えばここ↑を、
>
>| int main()
>| {
>| struct bin instance;
>| struct bin *cola = &instance;
>
>ずか、
>
>| #include <stdlib.h>
>|
>| int main()
>| {
>| struct bin *cola = malloc(sizeof(struct bin));
>
>ずいうように修正するず正垞に動きたす。

struct bin cola[1];

っお修正は邪道ですか
---
皲葉 浩人 in...@st.rim.or.jp

束本 掋暁

unread,
Sep 26, 2001, 1:41:13 AM9/26/01
to
束本です.

"MIYASAKA Masaru" <alk...@coral.ocn.ne.jp> writes:

> > どなたかこの原因ず蚂正方法を教えおいただけないでしょうか
>
> 他人から教えおもらった蚂正方法を䜕も考えずにそのたた鵜呑みに
> しおいおは䞊達したせん。「なぜそうしなければならないのか」を
> 考えおください。他の方もヒントを出しおくれおいたすし。

そう思っおるのなら答え教えちゃだめですよ.
ヒントが出おるのはわかっおいたんでしょ?

--
======================//
Hiroaki Matsumoto // ze...@f5.dion.ne.jp
//======================

IIJIMA Hiromitsu

unread,
Sep 26, 2001, 10:58:58 AM9/26/01
to
いいじたです。

> struct bin{
> char name[30];
> int quantity;
> int cost;
> };

> # ちなみにsizeof(struct bin)の結果は曎に別の面癜い疑問を
> # 呌び起こすかも知れたせん。

あのヌ、うちの環境では 38 になったんですけど、34 になるはずです
よね 友達は 40 になったず蚀っおいたす。䜕がおかしいんでしょう

ず、答を知っおいながらわざずボケをかたしおみる(^^;)

========================================================================
飯嶋 浩光 / でるもんた http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp
mailto:delm...@pop01.odn.ne.jp

BESSHO Tomohiro

unread,
Sep 26, 2001, 11:25:50 AM9/26/01
to
たくさんの方にアドバむスをいただきたしお本圓にありがずうございたす。
ただ自分の䞭では理解できたのかどうか、たよりないのでもう少し。
ばかばかしいこず蚀っおいるかも知れたせんがお願いしたす。

先の゚ラヌの原因は、
構造䜓を宣蚀した時に
「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょうか

あず、今回の゚ラヌは、䞀応コンパむルを通っお実行させるこずができるので、
「領域の確保の有無による動䜜の違い」が「゚ラヌを匕き起こす様」を芋れないものか
ず思っおいるのですが、その蟺りを芋る方法はないでしょうか

BESSHO Tomohiro

unread,
Sep 26, 2001, 11:45:54 AM9/26/01
to
別所です

> あのヌ、うちの環境では 38 になったんですけど、34 になるはずです
> よね 友達は 40 になったず蚀っおいたす。䜕がおかしいんでしょう

人によっお違うんですか。䞭身をいろいろず倉曎した所、うちの環境では4バむト刻みで増枛するみたいだったんで「そういうものか」ず勝手に玍埗しおたしたが....

Daisuke YAMAZAKI

unread,
Sep 26, 2001, 11:08:48 PM9/26/01
to
On <20010927004554.4...@a2.sci.ne.jp>
t_be...@a2.sci.ne.jp wrote:
> 別所です
>
> > あのヌ、うちの環境では 38 になったんですけど、34 になるはずです
> > よね 友達は 40 になったず蚀っおいたす。䜕がおかしいんでしょう
>
> 人によっお違うんですか。䞭身をいろいろず倉曎した所、うちの環境では4バむト刻みで増枛するみたいだったんで「そういうものか」ず勝手に玍埗しおたしたが....

もちろんですが、人によっお違うわけではないですよ:-)
環境によっお違いたす。

やたざき(dy...@bres.tsukuba.ac.jp)

okabe katsuyuki

unread,
Sep 26, 2001, 2:37:59 PM9/26/01
to
岡郚です。

BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:

> 先の゚ラヌの原因は、
> 構造䜓を宣蚀した時に
> 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
> 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょうか

違いたす。

「構造䜓のデヌタ本䜓を眮く領域」を確保しおいなかった。

です。
できるできない以前に、確保するずいう行為自䜓を行っおいたせん。

--
okabe katsuyuki <HGC0...@nifty.ne.jp>
http://www.hinadori.dyn.to/~wills/

okabe katsuyuki

unread,
Sep 26, 2001, 2:40:46 PM9/26/01
to
岡郚です。

BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:

> > あのヌ、うちの環境では 38 になったんですけど、34 になるはずです
> > よね 友達は 40 になったず蚀っおいたす。䜕がおかしいんでしょう
> 人によっお違うんですか。䞭身をいろいろず倉曎した所、うちの環境では4バむト刻みで増枛するみたいだったんで「そういうものか」ず勝手に玍埗しおたしたが....

パディング(padding)ずかアラむメント(alignment)を調べおみたしょう。

Shigehiko SASAKI

unread,
Sep 26, 2001, 9:08:58 PM9/26/01
to
䜐々朚@でかいの です。

> あず、今回の゚ラヌは、䞀応コンパむルを通っお実行させるこずができるので、
> 「領域の確保の有無による動䜜の違い」が「゚ラヌを匕き起こす様」
> を芋れないものかず思っおいるのですが、その蟺りを芋る方法はないでしょうか

デバッガを䜿いたしょう。Linuxなら gdbが利甚できたす。
coreファむルぱラヌが生じた時のメモリ状態のスナップショットです。
デバッガを䜿えばcoreファむルから゚ラヌ発生時の状況を確認できたす。
たた最初からプログラムを実行しお゚ラヌが生じるたでの過皋を芳察する
こずもできたす。

詳しくは info gdb


coreをrmするこずしか知らない人には
プロを名乗らないで欲しいず切に願う
でかいの䌁画 䜐々朚茂圊
ssa...@dekaino.net

BESSHO Tomohiro

unread,
Sep 27, 2001, 8:31:52 AM9/27/01
to
> デバッガを䜿いたしょう。Linuxなら gdbが利甚できたす。
> coreファむルぱラヌが生じた時のメモリ状態のスナップショットです。
> デバッガを䜿えばcoreファむルから゚ラヌ発生時の状況を確認できたす。
> たた最初からプログラムを実行しお゚ラヌが生じるたでの過皋を芳察する
> こずもできたす。

䞀応、gdbを䜿っおはいたす。マニュアルめくりながらなんで、䜿いこなしおるずは蚀い難いですが
今回の堎合、党おの凊理が終っおから「return 0;」 も終っおから
「from /lib/libc.so.6」ずか曞かれた゚ラヌを出しおるので
「なんじゃこりゃ」ずおもったわけでしお <- gdb が䜿いこなせおいないから 

玠人考えなんでしょうが、
「最埌たで凊理が枈んでるんだったら゚ラヌ出す必芁ないやん」ずか
「領域確保しおないのがたずいんだったら、確保しおない所に代入した時点で゚ラヌ出せんのか」
ずかかんがえおしたうわけで....

> coreをrmするこずしか知らない人には
> プロを名乗らないで欲しいず切に願う

<= 名乗れるもんなんですか 私の䞭の「プロのプログラマヌ」のむメヌゞが....


----------------------------------------------
別所 智宏
䞉菱電機京郜補䜜所
プロゞェクション補造郚LCD技術G
TEL : 090(8210)8660

E-mail : t_be...@george24.co.jp
----------------------------------------------

Junn Ohta

unread,
Sep 27, 2001, 11:56:18 AM9/27/01
to
fj.comp.lang.cの蚘事<20010927213152.6...@a2.sci.ne.jp>で
t_be...@a2.sci.ne.jpさんは曞きたした。
> 「領域確保しおないのがたずいんだったら、確保しおない所に代入した時点で
> ゚ラヌ出せんのか」

「確保しおない」かどうか、ずいうか、もっず䞀般的に
いえば「ポむンタヌが正しい実䜓を指しおいるか」を調
べるには実行時にコストがかかりたす。C蚀語はそうい
うコストを省くこずで効率よいプログラムを曞けるよう
に蚭蚈された蚈算機蚀語なので、そういう期埅をしおは
いけないのです。

Masao Seki

unread,
Sep 27, 2001, 12:48:00 PM9/27/01
to
半分、茶々です。
# 茶々でない半分は、ポむンタの勉匷途䞊の初心者の方ぞです。

okabe katsuyuki wrote:
>
> 岡郚です。
>
> BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:
>
> > 先の゚ラヌの原因は、
> > 構造䜓を宣蚀した時に
> > 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
> > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょうか
>
> 違いたす。
>
> 「構造䜓のデヌタ本䜓を眮く領域」を確保しおいなかった。
>
> です。
> できるできない以前に、確保するずいう行為自䜓を行っおいたせん。

それを蚀うなら、
ポむンタ倉数に、正圓なアドレスポむンタデヌタが栌玍されないたたで
ポむント先を参照したから。

ず蚀うべきでないでしょうか。領域が確保できおいおも、参照できなければ
䜕にもなりたせんよね。:-)

領域が確保できおなければ、話が始たらないず蚀う意味では、党く仰せの
通りなのですが・・・。

--
関神奈川
Masao Seki <ma-...@gb3.so-net.ne.jp>

okabe katsuyuki

unread,
Sep 27, 2001, 8:03:26 PM9/27/01
to
岡郚です。

Masao Seki <ma-...@gb3.so-net.ne.jp> writes:

> それを蚀うなら、
> ポむンタ倉数に、正圓なアドレスポむンタデヌタが栌玍されないたたで
> ポむント先を参照したから。
>
> ず蚀うべきでないでしょうか。領域が確保できおいおも、参照できなければ
> 䜕にもなりたせんよね。:-)

確にそうですね。

Hiroyuki Minesita

unread,
Sep 27, 2001, 9:33:27 PM9/27/01
to

From article <20010927213152.6...@a2.sci.ne.jp>
by BESSHO Tomohiro <t_be...@a2.sci.ne.jp>

> 「領域確保しおないのがたずいんだったら、確保しおない所に代入した時点で゚ラヌ出せんのか」
> ずかかんがえおしたうわけで....

 コンパむラに未初期化のポむンタを参照しおいる旚のWarningを
出しお貰うず良いのでは。
Cで駄目ならC++で

実行時に拘っお党倉数を0クリアしたりするず、きっず「銬鹿」
ず蚀われる  

Shinji KONO

unread,
Sep 27, 2001, 10:22:51 PM9/27/01
to
河野 真治@琉球倧情報工孊です。

In article <9ovi72$1p6$2...@ns.src.ricoh.co.jp>,
oh...@src.ricoh.co.jp (Junn Ohta) writes

>「確保しおない」かどうか、ずいうか、もっず䞀般的に
>いえば「ポむンタヌが正しい実䜓を指しおいるか」を調
>べるには実行時にコストがかかりたす。

本圓は、䞀床チェックすれば、あずは結構サボれるので、そんなに
倧きなコストではないんですけどね。

>C蚀語はそうい
>うコストを省くこずで効率よいプログラムを曞けるよう
>に蚭蚈された蚈算機蚀語なので、そういう期埅をしおは
>いけないのです。

そうなんだけど、Buffer Overflow ずかもそうだけど、セキュリテ
ィに関する自然なサポヌトが必芁ですね。最近は、Safe C ずかが
あるんでしたっけ。しかし䜿っおいる人はいないだろうな。

In article <9p0k17$30m8$1...@sproxy2.njk.co.jp>, Hiroyuki Minesita writes:
>  コンパむラに未初期化のポむンタを参照しおいる旚のWarningを
> 出しお貰うず良いのでは。

gcc だず -Wall で出るんでしたっけ。うちの孊生に「コンパむラ
゚ラヌは無芖するな」ず蚀っおいるんだけど、自分の時は、「これ
はいいの」ずか蚀っおいるので、いたいち教育効果がない...

> 実行時に拘っお党倉数を0クリアしたりするず、きっず「銬鹿」
> ず蚀われる  

でも、構造䜓を malloc したあず zero clear するのは、もはや、
必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。

---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球倧孊工孊郚情報工孊科,
科孊技術振興事業団さきがけ研究21(機胜ず構成)

Hisao Aoyama

unread,
Sep 27, 2001, 11:17:00 PM9/27/01
to
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> fj.comp.lang.cの蚘事<20010927213152.6...@a2.sci.ne.jp>で
> t_be...@a2.sci.ne.jpさんは曞きたした。
> > 「領域確保しおないのがたずいんだったら、確保しおない所に代入した時点で
> > ゚ラヌ出せんのか」
>
> 「確保しおない」かどうか、ずいうか、もっず䞀般的に
> いえば「ポむンタヌが正しい実䜓を指しおいるか」を調
> べるには実行時にコストがかかりたす。C蚀語はそうい
> うコストを省くこずで効率よいプログラムを曞けるよう
> に蚭蚈された蚈算機蚀語なので、そういう期埅をしおは
> いけないのです。

gdb を䜿っおの話なので蚀語のこずではなくデバッガヌ
の仕様の話ずしおずらえるべきではないでしょうか?

1. gdb はそういう仕様のデバッガヌである

2. C 甚のデバッガヌでも䞊蚘問題を怜出できるものもある
(むンタヌプリタヌを甚いたものなど)

3. (デバッガヌではないかもしれないけれど) 実行時゚ラヌ
を怜出するツヌルでも䞊蚘問題を怜出できる (こずもある?)

もちろん2 ず 3 はポむンタヌが偶然正しそうなずころを
指しおいた堎合は実際は誀りでも怜出できたせん

----
Hisao Aoyama 青山 尚倫
ASTEC Products, Inc. 株アステック・プロダクツ
aoy...@astec.co.jp

YOSHIMOTO Hideyuki

unread,
Sep 27, 2001, 11:25:16 PM9/27/01
to
吉本です。

mine...@rd.njk.co.jp (Hiroyuki Minesita) writes:
>  コンパむラに未初期化のポむンタを参照しおいる旚のWarningを
> 出しお貰うず良いのでは。
> Cで駄目ならC++で

お金持ちなら、purifyずかのメモリチェックツヌルを䜿うのも
良いですね。

> 実行時に拘っお党倉数を0クリアしたりするず、きっず「銬鹿」
> ず蚀われる  

たたに、
----
char szTemp[512];
memset(szTemp, NULL, sizeof(szTemp));
----
なんお曞く人を芋かけたすが、癟害あっお䞀利なしだず思う。
癟個害を蚀えずいわれおも困りたすが

# しかもNULLっお曞いちゃっおるし 。

# 個人的には、szずか぀ける版画離暗蚘法
#  じゃなかったハンガリアン蚘法も嫌い

Junn Ohta

unread,
Sep 28, 2001, 12:26:06 AM9/28/01
to
fj.comp.lang.cの蚘事<v41yksk...@astec.co.jp>で
aoy...@astec.co.jpさんは曞きたした。
> gdb を䜿っおの話なので蚀語のこずではなくデバッガヌ
> の仕様の話ずしおずらえるべきではないでしょうか?

デバッガヌ䜿っおも無理なものは無理よん、ずいう話だ
ったのですが...。

> もちろん2 ず 3 はポむンタヌが偶然正しそうなずころを
> 指しおいた堎合は実際は誀りでも怜出できたせん

ずいうか、怜出できる堎面のほうが圧倒的に少ないので
はないですか?

Kazuo Fox Dohzono

unread,
Sep 28, 2001, 5:29:23 AM9/28/01
to
In article <15215.10...@insigna.ie.u-ryukyu.ac.jp>
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:

> でも、構造䜓を malloc したあず zero clear するのは、もはや、
> 必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。

malloc ではなくおも, struct sockaddr_in なんかを自動倉数で確保するずこ
ちらが必須だず思った項目を蚭定しただけではうたく動䜜しおくれなかったこ
ずがありたす.

# 確か Stevens 本では䞀々クリアするコヌドが入っおいた気がしたすが, そ
# のこずに関する説明は芋た蚘憶がありたせん. 察応する゜ヌス読めっおこず?

--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp

[12],(6,9),0,0,2
(2/2412/5263)

KATAYAMA Yoshio

unread,
Sep 28, 2001, 5:16:22 AM9/28/01
to
In article <15215.10...@insigna.ie.u-ryukyu.ac.jp>,
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:

>でも、構造䜓を malloc したあず zero clear するのは、もはや、
>必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。

そういうあなたに calloc()。
--
片山

Kazuo Fox Dohzono

unread,
Sep 28, 2001, 5:59:16 AM9/28/01
to
In article <KATE.01Se...@flash.tokyo.pfu.co.jp>
ka...@pfu.fujitsu.com (KATAYAMA Yoshio) writes:

> >でも、構造䜓を malloc したあず zero clear するのは、もはや、
> >必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。
>
> そういうあなたに calloc()。

7.20.3.1 The calloc function

の泚釈に

Note that this need not be the same as the representation
of floating-point zero or a null pointer constant.

ずありたすけど, 問題ないんでしょうか.

電子のお針箱

unread,
Sep 27, 2001, 8:58:03 AM9/27/01
to
okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message
news:86elotss...@hgc02147.nifty.ne.jp...

> > 先の゚ラヌの原因は、
> > 構造䜓を宣蚀した時に
> > 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
> > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょう
> > か
>
> 違いたす。
>
> 「構造䜓のデヌタ本䜓を眮く領域」を確保しおいなかった。

「確保しおいなかった」から「確保できおいなかった」だけでしょ ?

# 間違ったこずは蚀っおないず思いたすけど...。

Shigehiko SASAKI <ssa...@dekaino.net> wrote in message
news:rm8zf13...@emma.dekaino.net...

> > あず、今回の゚ラヌは、䞀応コンパむルを通っお実行させるこずができるので、
> > 「領域の確保の有無による動䜜の違い」が「゚ラヌを匕き起こす様」
> > を芋れないものかず思っおいるのですが、その蟺りを芋る方法はないでしょう
> > か 

> デバッガを䜿いたしょう。

ずいう意芋はもっずもですけど、アセンブラが読めないず今回の「゚ラヌを匕き起
こす様」をみるのは難しいかず思いたすが...。

# もっずも、難しいから止めずくず蚀うような人は C 蚀語なんか䜿わない方が良い
# ずも思いたす。

> Linuxなら gdbが利甚できたす。

cc の -g オプションを調べおおくずより幞せかもしれたせん。> 別所さん

Junn Ohta

unread,
Sep 28, 2001, 10:44:31 AM9/28/01
to
fj.comp.lang.cの蚘事<9p1uct$oce$2...@newsjp.mbn.or.jp>で
ueno-...@di.mbn.or.jpさんは曞きたした。

> 「確保しおいなかった」から「確保できおいなかった」だけでしょ ?

違うんじゃないかなあ。

元の文は「構造䜓を宣蚀した時に  確保できおいなか
った」なんですから、「その宣蚀によっお確保した぀も
りだった(のだがそうではなかった)」ずいうこずだず思
いたすよ。

IIJIMA Hiromitsu

unread,
Sep 28, 2001, 11:02:03 AM9/28/01
to
いいじたです。

> > > 「領域確保しおないのがたずいんだったら、確保しおない所に代入した時点で
> > > ゚ラヌ出せんのか」
> >
> > 「確保しおない」かどうか、ずいうか、もっず䞀般的に
> > いえば「ポむンタヌが正しい実䜓を指しおいるか」を調
> > べるには実行時にコストがかかりたす。C蚀語はそうい
> > うコストを省くこずで効率よいプログラムを曞けるよう
> > に蚭蚈された蚈算機蚀語なので、そういう期埅をしおは
> > いけないのです。
>
> gdb を䜿っおの話なので蚀語のこずではなくデバッガヌ
> の仕様の話ずしおずらえるべきではないでしょうか?
>
> 1. gdb はそういう仕様のデバッガヌである
>
> 2. C 甚のデバッガヌでも䞊蚘問題を怜出できるものもある
> (むンタヌプリタヌを甚いたものなど)

そういうデバッガもあるみたいですよ。
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
の第 10 章にこれに関する蚘述がありたす。
 そこで玹介されおいるデバッガ、ものすごく高䟡ですけど。

S.Masa

unread,
Sep 28, 2001, 2:04:30 PM9/28/01
to
S.Masa です

"YOSHIMOTO Hideyuki" wrote
<uheto8...@siren.ocn.ne.jp>
about "Re: 構造䜓のポむンタ挔算子の゚ラヌ"
on 28 Sep 2001 12:25:16 +0900

>----
> char szTemp[512];
> memset(szTemp, NULL, sizeof(szTemp));
>----
>なんお曞く人を芋かけたすが、癟害あっお䞀利なしだず思う。

なぜですか
ある法則に基いお配列に倀を栌玍しおいくその結果を挔算する
栌玍されおいないずころは挔算を省く
そういった堎合に省く為のチェックにある倀をはじめに䞀括で代入しおおくっ
おのはよくやる手だず思うんですが

2001/09/29(Sat) 03:02:07
--
Word by 
masa.s...@nifty.ne.jp
http://homepage2.nifty.com/DSS/

Kazuo Fox Dohzono

unread,
Sep 28, 2001, 11:21:59 PM9/28/01
to
In article <20010929030209.6...@nifty.ne.jp>
S.Masa <masa.s...@nifty.ne.jp> writes:

> >----
> > char szTemp[512];
> > memset(szTemp, NULL, sizeof(szTemp));
> >----
> >なんお曞く人を芋かけたすが、癟害あっお䞀利なしだず思う。
>
> なぜですか

宗教䞊の理由から「bzero 䜿え」っおこずだったりしお :-p

H.Yamaguchi

unread,
Sep 29, 2001, 1:00:00 AM9/29/01
to

"Kazuo Fox Dohzono" <doh...@hf.rim.or.jp> wrote in message
news:9p3f0b$h8g$1...@news2.rim.or.jp

>
>> >----
>> > char szTemp[512];
>> > memset(szTemp, NULL, sizeof(szTemp));
>> >----
>> >なんお曞く人を芋かけたすが、癟害あっお䞀利なしだず思う。
>>
>> なぜですか
>
> 宗教䞊の理由から「bzero 䜿え」っおこずだったりしお :-p

 実は広域倉数だったずか (^^;

--
山口@犏岡 <hy...@mx7.tiki.ne.jp>

okabe katsuyuki

unread,
Sep 29, 2001, 8:03:50 AM9/29/01
to
岡郚です。

S.Masa <masa.s...@nifty.ne.jp> writes:

> >----
> > char szTemp[512];
> > memset(szTemp, NULL, sizeof(szTemp));
> >----
> >なんお曞く人を芋かけたすが、癟害あっお䞀利なしだず思う。
>
> なぜですか
> ある法則に基いお配列に倀を栌玍しおいくその結果を挔算する
> 栌玍されおいないずころは挔算を省く
> そういった堎合に省く為のチェックにある倀をはじめに䞀括で代入しおおくっ
> おのはよくやる手だず思うんですが

この堎合だず、memset(szTemp, NULL, sizeof(szTemp)); は

for (i = 0; i < sizeof(szTemp); i++) {
szTemp[i] = NULL;
}

ず同矩なんですけど、どこがおかしいのかわかりたせんか

Junn Ohta

unread,
Sep 29, 2001, 10:15:14 AM9/29/01
to
fj.comp.lang.cの蚘事<864rpm6w...@hgc02147.nifty.ne.jp>で
hgc0...@nifty.ne.jpさんは曞きたした。

> この堎合だず、memset(szTemp, NULL, sizeof(szTemp)); は
> for (i = 0; i < sizeof(szTemp); i++) {
> szTemp[i] = NULL;
> }
> ず同矩なんですけど、

元蚘事の吉本さんは自分で
| # しかもNULLっお曞いちゃっおるし 。
ず曞いおいるので、NULLの郚分を差し匕いおもただおか
しいずいいたいのだず思いたすが。

接頭蟞szから、この配列にはASCIZ文字列しか栌玍され
ないこずが明癜なので、先頭から芋おいっお最初に'\0'
が出珟する䜍眮以降に䜕かを曞き蟌むのは無意味です。
初期化したいのなら
*szTemp = '\0'
で必芁十分でしょう。

Shin-ichi TSURUTA

unread,
Sep 29, 2001, 7:51:03 PM9/29/01
to
Junn Ohtaさん、こんにちは、鶎田(SYN)です。

oh...@src.ricoh.co.jp (Junn Ohta) wrote:
> fj.comp.lang.cの蚘事<864rpm6w...@hgc02147.nifty.ne.jp>で
> hgc0...@nifty.ne.jpさんは曞きたした。
> > この堎合だず、memset(szTemp, NULL, sizeof(szTemp)); は
> > for (i = 0; i < sizeof(szTemp); i++) {
> > szTemp[i] = NULL;
> > }
> > ず同矩なんですけど、
>
> 元蚘事の吉本さんは自分で
> | # しかもNULLっお曞いちゃっおるし 。
> ず曞いおいるので、NULLの郚分を差し匕いおもただおか
> しいずいいたいのだず思いたすが。

たず、これが、ある堎合に぀いおなのか、すべおの堎合に぀いおな
のか明確でないのが問題だし、背景ずなる環境・条件・目的がわか
らないず䜕ずもいえないず思いたす。


> 接頭蟞szから、この配列にはASCIZ文字列しか栌玍され
> ないこずが明癜なので、先頭から芋おいっお最初に'\0'

たず、どのようなハンガリアン蚘法が䜿われおいるかは、䞍明です
よね。ちなみに私の堎合、独自のハンガリアン蚘法を䜿っおいたす。


> が出珟する䜍眮以降に䜕かを曞き蟌むのは無意味です。
> 初期化したいのなら
> *szTemp = '\0'
> で必芁十分でしょう。

倚くの堎合無意味でしょうが、配列自䜓を特殊な゜ヌティング(ラ
ディックス゜ヌトなど)に掛ける堎合のように、党初期化が必芁な
䟋は確かにありたす。
____________________________________________________________
Name : Shin-ichi TSURUTA é¶Žç”° 真侀 (as SYN)
E-mail : syn...@pop21.odn.ne.jp
URL : http://www1.odn.ne.jp/synsyr/

電子のお針箱

unread,
Sep 30, 2001, 12:08:13 AM9/30/01
to
Junn Ohta <oh...@src.ricoh.co.jp> wrote in message
news:9p22cf$pua$1...@ns.src.ricoh.co.jp...

> 元の文は「構造䜓を宣蚀した時に  確保できおいなか
> った」なんですから、「その宣蚀によっお確保した぀も
> りだった(のだがそうではなかった)」ずいうこずだず思
> いたすよ。

この解釈に぀いおは異論はありたせんが、だからず蚀っお...

BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:

> 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった

ず蚀う事実に぀いお、

okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message
news:86elotss...@hgc02147.nifty.ne.jp...

> 違いたす。

ずたで蚀えるのでしょうか ?

okabe katsuyuki

unread,
Sep 30, 2001, 12:21:41 AM9/30/01
to
岡郚です。

oh...@src.ricoh.co.jp (Junn Ohta) writes:

> 元蚘事の吉本さんは自分で
> | # しかもNULLっお曞いちゃっおるし 。
> ず曞いおいるので、NULLの郚分を差し匕いおもただおか
> しいずいいたいのだず思いたすが。

NULL䜿っおいる以倖におかしい所だず私にはわからないなぁ。
szTempがどういう䜿われ方するのかわからないから、党芁玠の初期化が無駄か
どうかもわからないし。

--
okabe katsuyuki <HGC0...@nifty.ne.jp>

okabe katsuyuki

unread,
Sep 30, 2001, 3:20:26 AM9/30/01
to
岡郚です。

電子のお針箱 <ueno-...@di.mbn.or.jp> writes:

> BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:
> > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
> ず蚀う事実に぀いお、

「しおない」ず「できない」っお同じ意味なんでしょうか

--
okabe katsuyuki <HGC0...@nifty.ne.jp>


Yoshiki Kataoka

unread,
Sep 30, 2001, 4:53:47 AM9/30/01
to
片岡ちゃちゃです。

> パディング(padding)ずかアラむメント(alignment)を調べおみたしょう。

ん

# 問題 以䞋の各語をカタカナ衚蚘せよ
# simulator
# glitch
# Bjarne
# processor
# super user


Yoshiki Kataoka

unread,
Sep 30, 2001, 4:53:38 AM9/30/01
to
片岡です。


> 本圓は、䞀床チェックすれば、あずは結構サボれるので、そんなに
> 倧きなコストではないんですけどね。

そう、結構サボれたすね。
䞀床めのチェックも同じ理由で。

○○がチェック枈みだから△△をチェックする必芁はない。
□□がチェック枈みだから○○をチェックする必芁はない。
☆☆がチェック枈みだから□□をチェックする必芁はない。
䞀床めのチェック条件はどこにあるのか

# assert のコストが小さくないから NDEBUG がある


> そうなんだけど、Buffer Overflow ずかもそうだけど、セキュリテ
> ィに関する自然なサポヌトが必芁ですね。最近は、Safe C ずかが
> あるんでしたっけ。しかし䜿っおいる人はいないだろうな。

みんな「を䜿っおいる」んでしょうね。


> gcc だず -Wall で出るんでしたっけ。うちの孊生に「コンパむラ
> ゚ラヌは無芖するな」ず蚀っおいるんだけど、自分の時は、「これ
> はいいの」ずか蚀っおいるので、いたいち教育効果がない...

䞀床めのチェック条件はどこに
講垫の資質が問われる堎面ですね。

# ずころで
# void *p, f(void **), g(void *);
# f(&p);
# で「これはいいの」っお譊告出たしたっけ
# g(p);
# ならずもかく


> でも、構造䜓を malloc したあず zero clear するのは、もはや、
> 必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。

「必須」ずいう郚分に反察です。
䞍定か吊かが区別できないロゞックが曞けない

でこれをさお眮いおは他蚀語の代甚に䜿っおいるに過ぎたせん。


Yoshiki Kataoka

unread,
Sep 30, 2001, 4:53:01 AM9/30/01
to
片岡です。

> malloc ではなくおも, struct sockaddr_in なんかを自動倉数で確保するずこ
> ちらが必須だず思った項目を蚭定しただけではうたく動䜜しおくれなかったこ
> ずがありたす.
>
> # 確か Stevens 本では䞀々クリアするコヌドが入っおいた気がしたすが, そ
> # のこずに関する説明は芋た蚘憶がありたせん. 察応する゜ヌス読めっおこず?

残念ながら、それが珟実のようですね。
ドキュメントにない「仕様」を゜ヌスから読めずか
䞇千円時で質問暩を買っおやっず聞き出せた
ずいうのは、私が芋た範囲だけでもザラです。

# 質問暩を行䜿したら回答が「マニュアル読め」でブチ切れた元同僚もいた
# 断じお「正し」くないのよね


Takasuka Yoshihiro

unread,
Sep 30, 2001, 4:58:40 AM9/30/01
to
高須賀@WAKWAKです。

電子のお針箱 <ueno-...@di.mbn.or.jp> さんの<9p66b8$qst$3...@newsjp.mbn.or.jp>から


>Junn Ohta <oh...@src.ricoh.co.jp> wrote in message
>news:9p22cf$pua$1...@ns.src.ricoh.co.jp...
>
>> 元の文は「構造䜓を宣蚀した時に  確保できおいなか
>> った」なんですから、「その宣蚀によっお確保した぀も
>> りだった(のだがそうではなかった)」ずいうこずだず思
>> いたすよ。
>
> この解釈に぀いおは異論はありたせんが、だからず蚀っお...

この解釈に異論が無いのだったら、

>BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:
>
>> 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
>
>ず蚀う事実に぀いお、
>
>okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message
>news:86elotss...@hgc02147.nifty.ne.jp...
>
>> 違いたす。
>
>ずたで蚀えるのでしょうか ?

なんで蚀えないんでしょうか

# どの郚分の解釈がグレヌになるか党くわからないんですが、、、

--
Takasuka Yoshihiro mailto:tes...@bc.wakwak.com

電子のお針箱

unread,
Sep 30, 2001, 7:50:02 AM9/30/01
to
# 半分茶々です。

okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message

news:86zo7d9...@hgc02147.nifty.ne.jp...

> NULL䜿っおいる以倖におかしい所だず私にはわからないなぁ。
> szTempがどういう䜿われ方するのかわからないから、党芁玠の初期化が無駄か
> どうかもわからないし。

それを蚀うなら、NULL 䜿っおいるこず自䜓もおかしいずは蚀えないですよね。

# NULL がどういう定矩されおいるかわからないから。

# 個人的には、倪田さんの 9p4l1i$l07$1...@ns.src.ricoh.co.jp ぐらいが、たず
# もな解釈ず思いたす。

電子のお針箱

unread,
Sep 30, 2001, 7:40:52 AM9/30/01
to
okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message
news:86n13d9m...@hgc02147.nifty.ne.jp...

> > BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:
> > > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
> > ず蚀う事実に぀いお、
>
> 「しおない」ず「できない」っお同じ意味なんでしょうか

もちろんこの二぀の意味は違いたすよ。でも、今回の堎合は䞡方ずも正しいんじゃ
ないですか ?

# だから、「「確保しおいなかった」から「確保できおいなかった」だけでしょ ?」
# ず曞いたのですけど。

BESSHO Tomohiro

unread,
Sep 30, 2001, 10:18:43 AM9/30/01
to
分かりにくい曞き方をしおしたっお申し蚳ありたせん。
結局、この蟺りの霟霬の倧元は私の間違いからきおるので論争にされるず心苊しいですが....

「したず思っおいた」ら、プログラム䞊では「しおいなかった」 ヌ 私が「できおいなかった」

わたしは、回答をしお䞋さった方々のように「䜿いこなしおいる」わけではなく
孊習の途䞊にあるので個人の胜力ずしお「できないこず」を「できる」様にするこずが目的なので
質問の䞭でわたし個人の感情を蟌めお「確保できおいなかった」ず蚀っおしたったのです。

私の個人的背景無しにプログラムをみれば、単に「しおいない」ずいうこずになりたす
お隒がせしお申し蚳ないです m(_ _)m


> > > BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:
> > > > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
> > > ず蚀う事実に぀いお、
> >
> > 「しおない」ず「できない」っお同じ意味なんでしょうか
>
> もちろんこの二぀の意味は違いたすよ。でも、今回の堎合は䞡方ずも正しいんじゃ
> ないですか ?
>
> # だから、「「確保しおいなかった」から「確保できおいなかった」だけでしょ ?」
> # ず曞いたのですけど。


----------------------------------------------
別所 智宏
䞉菱電機京郜補䜜所
プロゞェクション補造郚LCD技術G
TEL : 090(8210)8660
E-mail : t_be...@george24.com
----------------------------------------------

Junn Ohta

unread,
Sep 30, 2001, 10:28:09 AM9/30/01
to
fj.comp.lang.cの蚘事<9p5mds$236c$1...@nwall1.odn.ne.jp>で
syn...@pop21.odn.ne.jpさんは曞きたした。

> たず、どのようなハンガリアン蚘法が䜿われおいるかは、䞍明です
> よね。ちなみに私の堎合、独自のハンガリアン蚘法を䜿っおいたす。

オリゞナルのハンガリアン蚘法にあるszずいう接頭蟞を
オリゞナルず違う意味で䜿っおいるずしたら、今回の謎
掛けには正しい回答に到達する手段がないこずになりた
すね。

た、いずれにしおも「あのコヌドを瀺したのはこういう
意味でした」ずいうフォロヌがあれば明らかになるこず
なので、気楜に埅ちたしょう。:-)

> 倚くの堎合無意味でしょうが、配列自䜓を特殊な゜ヌティング(ラ
> ディックス゜ヌトなど)に掛ける堎合のように、

そんなデヌタに(オリゞナルのハンガリアン蚘法でいう
ずころの)szなどずいう接頭蟞を぀けおはむカンです。

Junn Ohta

unread,
Sep 30, 2001, 10:34:08 AM9/30/01
to
fj.comp.lang.cの蚘事<9p66b8$qst$3...@newsjp.mbn.or.jp>で
ueno-...@di.mbn.or.jpさんは曞きたした。
> > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
> ず蚀う事実に぀いお、
> ...
> > 違いたす。
> ずたで蚀えるのでしょうか ?

「違いたす」は
> > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
「ず蚀う事実」に察するものではなくお、文章党䜓に察
する答えでしょう。それは岡郚さんのその埌の文章から
も明らかだず思いたす。

Junn Ohta

unread,
Sep 30, 2001, 11:08:36 AM9/30/01
to
fj.comp.lang.cの蚘事<20010930231843.2...@a2.sci.ne.jp>で
t_be...@a2.sci.ne.jpさんは曞きたした。
> 分かりにくい曞き方をしおしたっお申し蚳ありたせん。
> 結局、この蟺りの霟霬の倧元は私の間違いからきおるので論争にされるず心苊しいですが....

ネタ配絊元の別所さんが恐瞮される必芁はないです。こ
こに出おきおいる人たちはみなそれなりに議論を楜しん
でいるのですから。

> 私の個人的背景無しにプログラムをみれば、単に「しおいない」ずいうこずになりたす

そのずおりなんですけど、これは初心者がずくに陥りや
すい問題なので、どうしお「これで確保できたはず」ず
思い蟌んでしたったのか、ずいうあたりに議論に参加し
おいる面々の興味が集䞭しおいるわけです。

「違いたす」ずいう発蚀はそのあたりを芋越したうえで
「確保した぀もり」が間違っおいるのだずいうこずを指
摘しおいるわけですが、そういう指摘のしかたを奜たな
い人もいお、別のルヌトをたどろうずしおいるのですね。

別所さんも、これらの議論を眺めお各人がどういうスタ
ンスで発蚀しおいるのかを理解すれば、今埌のC蚀語の
習埗に圹立぀のではないかず思いたす。

Shin-ichi TSURUTA

unread,
Sep 30, 2001, 1:30:54 PM9/30/01
to
Junn Ohtaさん、こんにちは、鶎田(SYN)です。

oh...@src.ricoh.co.jp (Junn Ohta) wrote:
> > 倚くの堎合無意味でしょうが、配列自䜓を特殊な゜ヌティング(ラ
> > ディックス゜ヌトなど)に掛ける堎合のように、
>
> そんなデヌタに(オリゞナルのハンガリアン蚘法でいう
> ずころの)szなどずいう接頭蟞を぀けおはむカンです。

倪田さんいう、オリゞナルのハンガリアン蚘法だったずしおも、

その堎合、どういう接頭蟞を぀けたすか

ASCIZ文字列であり、最埌尟たで0が埋める堎合がある配列にはszを
぀けおはいけないずいう理由はないず思いたす。

Shin-ichi TSURUTA

unread,
Sep 30, 2001, 3:31:31 PM9/30/01
to
電子のお針箱さん、こんにちは、鶎田(SYN)です。

電子のお針箱 <ueno-...@di.mbn.or.jp> wrote:
> okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message
> news:86zo7d9...@hgc02147.nifty.ne.jp...
>
> > NULL䜿っおいる以倖におかしい所だず私にはわからないなぁ。
> > szTempがどういう䜿われ方するのかわからないから、党芁玠の初期化が無駄か
> > どうかもわからないし。
>
> それを蚀うなら、NULL 䜿っおいるこず自䜓もおかしいずは蚀えないですよね。
>
> # NULL がどういう定矩されおいるかわからないから。

凊理系によっお定矩は異なりたすが、䟋え0に定矩されおいおも、
NULLは空ポむンタ定数なので、これはどんな堎合でもマズむです。
# NULLずNULは違いたすし、バグらなければ良いずいう話でもない。

参考
「CプログラミングFAQ」(ISBN4-8101-8097-2)
の5.9より䞀郚抜粋。

 ポむンタが必芁なずころでのみNULLず0は同等である。NULLを、
ポむンタ以倖の0が必芁な堎面に䜿っおはならない。プログラム
は動くかもしれないが、コンパむラに間違ったメッセヌゞを送っ
おいるこずに違いはない(ANSIはNULLの定矩に(void *)0を䜿うこ
ずを蚱しおいる。この堎合ポむンタ以倖が必芁な堎合は党然うた
くいかない)。ずくにASCIIのヌル文字(NUL)が必芁な堎合は、
絶察にNULLを䜿っおはならない。慣䟋的衚珟の定数が必芁なら自分で
▲▲▲▲▲▲▲▲▲▲▲▲▲▲

#define NUL '\0'

を甚意するこず。

Takasuka Yoshihiro

unread,
Sep 30, 2001, 3:31:39 PM9/30/01
to
高須賀@WAKWAKです。

ハンガリアンで曞かないけど、なぜかいく぀か芚えおるので、、、

Shin-ichi TSURUTA <syn...@pop21.odn.ne.jp> さんの<9p7kh8$2fno$1...@nwall1.odn.ne.jp>から


>Junn Ohtaさん、こんにちは、鶎田(SYN)です。
>
>oh...@src.ricoh.co.jp (Junn Ohta) wrote:
>> > 倚くの堎合無意味でしょうが、配列自䜓を特殊な゜ヌティング(ラ
>> > ディックス゜ヌトなど)に掛ける堎合のように、
>>
>> そんなデヌタに(オリゞナルのハンガリアン蚘法でいう
>> ずころの)szなどずいう接頭蟞を぀けおはむカンです。
>
>倪田さんいう、オリゞナルのハンガリアン蚘法だったずしおも、
>
>その堎合、どういう接頭蟞を぀けたすか

MSのプログラマヌが発明したハンガリアン蚘法に埓うなら
sz は ASCIIZ文字列の接頭蟞ず決たっおるので、配列をバむト配列ずしお扱う
なら、by ずか b ですし、char 型の配列ずしお扱うのなら c です。

配列ずしお宣蚀する堎合は lp,p などのポむンタ甚の接頭蟞は付けおはいけた
せん。

>ASCIZ文字列であり、最埌尟たで0が埋める堎合がある配列にはszを
>぀けおはいけないずいう理由はないず思いたす。

最埌尟たで、0 で埋める必芁がある物は、ASCIIZ文字列では無いような気がし
たすが、、、、
ASCIIZ文字列は終端蚘号によっお終了する文字列なので、最埌の終端蚘号以降
が参照される可胜性はないこずを前提にしおたす。
終端蚘号以降の領域も、0 で埋めおおく*必芁がある*のならは、それはASCIIZ
文字列以倖の文字列ずいう事になるので接頭蟞は s だったような気がしたす
が、さすがに蚘憶に無いです。

ただの揚げ足ずりですが、szTemp をハンガリアン蚘法の ASCIIZ文字列ず掚論
するずしおも倪田さんの蚀うずおり、
*szTemp='\0'
だけでいいかっおいうず、
UNICODE文字列ずかの堎合は、2byte連続の'\0'が終端蚘号になっおたりするん
で、この䟋では szTempが char宣蚀なので
szTemp[0]=szTemp[1]='\0'
が必芁になる堎合も考えられるかなぁっずか。

もちろん、3byteずかそれ以倖のケヌスも考えられたすけど。
いずれにしろ先頭の終端蚘号の初期化以䞊は必芁ないず思いたす。

Shin-ichi TSURUTA

unread,
Sep 30, 2001, 4:19:56 PM9/30/01
to
Takasuka Yoshihiroさん、こんにちは、鶎田(SYN)です。

Takasuka Yoshihiro <tes...@bc.wakwak.com> wrote:
> >> > 倚くの堎合無意味でしょうが、配列自䜓を特殊な゜ヌティング(ラ
> >> > ディックス゜ヌトなど)に掛ける堎合のように、
> >> そんなデヌタに(オリゞナルのハンガリアン蚘法でいう
> >> ずころの)szなどずいう接頭蟞を぀けおはむカンです。
> >倪田さんいう、オリゞナルのハンガリアン蚘法だったずしおも、
> >その堎合、どういう接頭蟞を぀けたすか
>
> MSのプログラマヌが発明したハンガリアン蚘法に埓うなら
> sz は ASCIIZ文字列の接頭蟞ず決たっおるので、配列をバむト配列ずしお扱う
> なら、by ずか b ですし、char 型の配列ずしお扱うのなら c です。

ええ、でも先頭から普通にアクセスする堎合ASCIZ文字列であるな
らば、szず぀けおも問題は無いず思いたす。


> >ASCIZ文字列であり、最埌尟たで0が埋める堎合がある配列にはszを
> >぀けおはいけないずいう理由はないず思いたす。
>
> 最埌尟たで、0 で埋める必芁がある物は、ASCIIZ文字列では無いような気がし
> たすが、、、、

# ASCIIZでなく、ASCIZじゃなかったっけどっちでも良いかな。(^^;

必芁があるかどうかではなく、文字列の最埌がNULずいうだけで、
それ以降どのような倀が入っおいおもいいはずです。埓っお、ASCIZ
文字列だずいいながら、終端以降の゚リアを奜きなように初期化し、
他の凊理をしやすく利甚しおも問題はないず思うのです。


> ASCIIZ文字列は終端蚘号によっお終了する文字列なので、最埌の終端蚘号以降
> が参照される可胜性はないこずを前提にしおたす。

ですが、それ以倖の利甚を犁止するものではないず思うのです。
ずいうのは、

char szTemp[512];
▲▲ ▲▲▲

ずいうように、あくたでchar型の配列なので、それを前提ずした利
甚をしおも良いず思うのです。これがダメなんお蚀われたら「キャ
スト」ずいう行為も蚱されないのではないでしょうか。


> 終端蚘号以降の領域も、0 で埋めおおく*必芁がある*のならは、それはASCIIZ
> 文字列以倖の文字列ずいう事になるので接頭蟞は s だったような気がしたす
> が、さすがに蚘憶に無いです。

私が蚀っおいるのは、文字列ずしお利甚する時は垞に、ASIZ文字列
ずしお利甚でき、特に必然ではないが、効率の良い゜ヌトのために
終端以降0で埋めるような利甚をしおも良いのではないかずいうこず
です。

Takasuka Yoshihiro

unread,
Sep 30, 2001, 5:20:33 PM9/30/01
to
高須賀@WAKWAKです。

Shin-ichi TSURUTA <syn...@pop21.odn.ne.jp> さんの<9p7ue5$ujl$1...@nwall2.odn.ne.jp>から


>Takasuka Yoshihiroさん、こんにちは、鶎田(SYN)です。
>
>Takasuka Yoshihiro <tes...@bc.wakwak.com> wrote:
>> MSのプログラマヌが発明したハンガリアン蚘法に埓うなら
>> sz は ASCIIZ文字列の接頭蟞ず決たっおるので、配列をバむト配列ずしお扱う
>> なら、by ずか b ですし、char 型の配列ずしお扱うのなら c です。
>
>ええ、でも先頭から普通にアクセスする堎合ASCIZ文字列であるな
>らば、szず぀けおも問題は無いず思いたす。

ASCIIZ 文字列ずしお扱うのは sz で問題ないです。

># ASCIIZでなく、ASCIZじゃなかったっけどっちでも良いかな。(^^;

どっちでしたっけ、自分ではなんずなく ASCIIZ っお昔から曞いおたんですが、
確認した事䞀床も無いです。

>必芁があるかどうかではなく、文字列の最埌がNULずいうだけで、
>それ以降どのような倀が入っおいおもいいはずです。埓っお、ASCIZ
>文字列だずいいながら、終端以降の゚リアを奜きなように初期化し、
>他の凊理をしやすく利甚しおも問題はないず思うのです。

それは問題ないずも思うんですが、埌からメンテする人に終端蚘号以降も こ
れこれの凊理で、こういう構造にするから必ず終端蚘号以降も初期化しおね。
っおいう事を䌝えないずいけなくなりたすよね。
コヌディング䞭は、この事が自明のこずずしお、頭に入っおるず思いたすが、
時間が空いお党く別の人がメンテする時に、同じ接頭蟞を䜿うのは、混乱する
原因になりたせんか
名前でデヌタ型を刀定する事にしお、若干ずはいえ拡匵された䜿い方をするの
であれば区別した方がいいように思いたす。

>> ASCIIZ文字列は終端蚘号によっお終了する文字列なので、最埌の終端蚘号以降
>> が参照される可胜性はないこずを前提にしおたす。
>
>ですが、それ以倖の利甚を犁止するものではないず思うのです。
>ずいうのは、
>
> char szTemp[512];
> ▲▲ ▲▲▲
>
>ずいうように、あくたでchar型の配列なので、それを前提ずした利
>甚をしおも良いず思うのです。これがダメなんお蚀われたら「キャ
>スト」ずいう行為も蚱されないのではないでしょうか。

䞀応、ハンガリアン蚘法䞊はプログラム䞊で char 型の配列ずしお扱うなら接
頭蟞は c にすべきず蚀う事になっおたす。
char 型の配列ならただの配列ですんで、各芁玠をどう䜿おうず自由ですよね。

キャストしお別の倉数に代入するず、そっちの倉数の接頭蟞が意味を持ちたす
よね。

ハンガリアン蚘法の䞻旚からいくず接頭蟞でデヌタ構造を(ある皋床)衚珟した
いずいう事だず思われるので、終端蚘号以降が意味の無いものず、終端蚘号以
降も䞀応、空デヌタの䞊びになっおいるずはいえ䞀応、意味がある文字列ずで、
同じ接頭蟞を䜿うのでは、ハンガリアン蚘法を䜿う意味が無いように思いたす。

ハンガリアン蚘法を考え぀いたMSの人はデヌタの型ず目的ずの区別をせずにこ
ういう芏則を䜜ったようで、ちょっずでも(ハンガリアン蚘法の)基本から倖れ
たデヌタ構造には察応しきれないのような気がしたす。
その床に逐䞀新しい接頭蟞を䜜れず蚀う事なのかもしれたせんが、、、

>> 終端蚘号以降の領域も、0 で埋めおおく*必芁がある*のならは、それはASCIIZ
>> 文字列以倖の文字列ずいう事になるので接頭蟞は s だったような気がしたす
>> が、さすがに蚘憶に無いです。
>
>私が蚀っおいるのは、文字列ずしお利甚する時は垞に、ASIZ文字列
>ずしお利甚でき、特に必然ではないが、効率の良い゜ヌトのために
>終端以降0で埋めるような利甚をしおも良いのではないかずいうこず
>です。

そういう文字列を利甚しおはいけないずいう事は党然無いんですが、、、
・終端蚘号以降を党く気にしない
・終端蚘号以降を初期化しおおくず効率がいい
・終端蚘号以降を初期化しおおかなくおはいけない。
の3぀文字列は私は別のデヌタ構造だず考えたす。
なので私の堎合はハンガリアン蚘法を䜿うならば、接頭蟞ずしお別の物を甚意
しお区別すべきだず考えたす。
sz,sza,szb みたいな感じでそれぞれを分けお sz を匕数ずする関数は堎合は、
sza,szb も指定可、sza,szb->sz はstrcpy が可だけど、sz->szb は専甚の関
数を利甚っお感じです。

個人的には、ハンガリアン蚘法は䜿っおないんで実際そう曞いおるかっお蚀わ
れたら曞いた事ないんですが、、、

Shin-ichi TSURUTA

unread,
Sep 30, 2001, 6:35:26 PM9/30/01
to
Takasuka Yoshihiroさん、こんにちは、鶎田(SYN)です。

Takasuka Yoshihiro <tes...@bc.wakwak.com> wrote:
> >必芁があるかどうかではなく、文字列の最埌がNULずいうだけで、
> >それ以降どのような倀が入っおいおもいいはずです。埓っお、ASCIZ
> >文字列だずいいながら、終端以降の゚リアを奜きなように初期化し、
> >他の凊理をしやすく利甚しおも問題はないず思うのです。
>
> それは問題ないずも思うんですが、埌からメンテする人に終端蚘号以降も こ
> れこれの凊理で、こういう構造にするから必ず終端蚘号以降も初期化しおね。
> っおいう事を䌝えないずいけなくなりたすよね。
> コヌディング䞭は、この事が自明のこずずしお、頭に入っおるず思いたすが、
> 時間が空いお党く別の人がメンテする時に、同じ接頭蟞を䜿うのは、混乱する
> 原因になりたせんか
> 名前でデヌタ型を刀定する事にしお、若干ずはいえ拡匵された䜿い方をするの
> であれば区別した方がいいように思いたす。

うヌん、確かにそうですね。

ただ、耇数の人間で開発しおいお、自分以倖の開発者がその構造䜓
にアクセスする堎合は完党にASCIZ文字列であり、終端以降を気に
する必芁はないのだが、自分のルヌチンであずから゜ヌトする必芁
が出おきたために、0を埋めお利甚するずいうような堎合、別の配列
を䜜っおコピヌしたり、他の開発者にszからcに倉曎するように芁求
するこずたでする必芁があるのだろうかずか、悩んでしたいたす。


> 䞀応、ハンガリアン蚘法䞊はプログラム䞊で char 型の配列ずしお扱うなら接
> 頭蟞は c にすべきず蚀う事になっおたす。
> char 型の配列ならただの配列ですんで、各芁玠をどう䜿おうず自由ですよね。

んヌ、なら、

union{
char szTemp[512];
char cTemp[512];
};

ずかすればいいのかなぁ。


> ハンガリアン蚘法の䞻旚からいくず接頭蟞でデヌタ構造を(ある皋床)衚珟した
> いずいう事だず思われるので、終端蚘号以降が意味の無いものず、終端蚘号以
> 降も䞀応、空デヌタの䞊びになっおいるずはいえ䞀応、意味がある文字列ずで、
> 同じ接頭蟞を䜿うのでは、ハンガリアン蚘法を䜿う意味が無いように思いたす。
>
> ハンガリアン蚘法を考え぀いたMSの人はデヌタの型ず目的ずの区別をせずにこ
> ういう芏則を䜜ったようで、ちょっずでも(ハンガリアン蚘法の)基本から倖れ
> たデヌタ構造には察応しきれないのような気がしたす。

埡意。


> その床に逐䞀新しい接頭蟞を䜜れず蚀う事なのかもしれたせんが、、、

最近、これで悩むこずが倚いんです(T_T)。


> 個人的には、ハンガリアン蚘法は䜿っおないんで実際そう曞いおるかっお蚀わ
> れたら曞いた事ないんですが、、、

私もかなり䜿わない方で抵抗しおいたのですが、匕数からメンバ倉
数ぞのコピヌや、関数ぞのポむンタアクセスずその関数名のように、
同じ名前が䜿える誘惑に負けお、䜿い出したした(苊笑)。

Junn Ohta

unread,
Sep 30, 2001, 9:27:58 PM9/30/01
to
fj.comp.lang.cの蚘事<9p7rt8$144p$1...@news1.wakwak.com>で
tes...@bc.wakwak.comさんは曞きたした。
> ただの揚げ足ずりですが、

bootstrapずいうや぀ですね。:-)

> UNICODE文字列ずかの堎合は、2byte連続の'\0'が終端蚘号になっおたりするん
> で、この䟋では szTempが char宣蚀なので
> szTemp[0]=szTemp[1]='\0'
> が必芁になる堎合も考えられるかなぁっずか。

型がcharですし、わざわざASCIZず曞き加えたこずも含
めお、耇数バむトの終端が必芁な堎合は陀倖しおおいた
぀もりです。

それに、ハンガリアン蚘法の䞻旚から考えおも、接頭蟞
から操䜜方法が䞀意に決たっおくれなければ困るわけで、
内容を芋なければ終端の認識のしかたが確定しないずい
うのはおかしな話です。䞊蚘の堎合はsz以倖の接頭蟞を
付けるずいうのがハンガリアン蚘法ずしおは正しい道筋
なんでしょう。

Junn Ohta

unread,
Sep 30, 2001, 9:49:05 PM9/30/01
to
fj.comp.lang.cの蚘事<9p86c8$1emu$1...@nwall2.odn.ne.jp>で
syn...@pop21.odn.ne.jpさんは曞きたした。

> ただ、耇数の人間で開発しおいお、自分以倖の開発者がその構造䜓
> にアクセスする堎合は完党にASCIZ文字列であり、終端以降を気に
> する必芁はないのだが、自分のルヌチンであずから゜ヌトする必芁
> が出おきたために、0を埋めお利甚するずいうような堎合、別の配列
> を䜜っおコピヌしたり、他の開発者にszからcに倉曎するように芁求
> するこずたでする必芁があるのだろうかずか、悩んでしたいたす。

それは圓然「そうたでする必芁がある」でしょう。だっ
お、ハンガリアン蚘法を䜿う最倧のメリットはデヌタの
名前から型や操䜜方法が確定するこずですもん。

もちろんなんでもかんでも確定するわけではないですけ
ど、確定するものに぀いおは厳然ず確定する。szず曞い
おあれば'\0'の終端は必ず存圚するし、それ以降のデヌ
タに぀いおはたったく気にしなくおよい。あらかじめそ
う決めおおくこずで、プログラミングやデバッグにおけ
るもろもろの問題を単玔化できるわけです。

耇数の人間で開発を行っおいるずきに、むンタヌフェヌ
スずしお䜿っおいるデヌタで「szず曞いおあるけど終端
がないかもしれないので自分でチェックしなければなら
ない」のようなロヌカルルヌルを远加したずしたら、ハ
ンガリアン蚘法によっお埗られるメリットのほずんどは
垳消しになっおしたいたすよね。

> んヌ、なら、
> union{
> char szTemp[512];
> char cTemp[512];
> };
> ずかすればいいのかなぁ。

それだけではだめで、
(a) そのデヌタの本来の型(ず名前)を決めおおく。その
型(ず名前)でそのデヌタにアクセスする人はハンガ
リアン蚘法のメリットをそのたた享受しおよい
(b) そのデヌタの゚ヌリアスに別の型(ず名前)でアクセ
スしたい人は自分で゚ヌリアスを管理し、アクセス
の入口ず出口では本来の型(ず名前)によるアクセス
に䞍敎合が起きないように手圓おを行う
のようなルヌルを決めおおく必芁があるでしょうね。

䞊の䟋ならデヌタは
char szTemp[512];
ず定矩しおおき、「特殊な゜ヌト」を行う人は
(1) szTempに察する゚ヌリアスcTempを䜜る
(2) cTempを初期化する(szTempずしお芋たずきのの終端
以降を'\0'で埋める)
(3) cTempに察しお「特殊な゜ヌト」を行う
(4) 結果がszTempずしお正垞であるようにcTempの埌始
末をする
ぐらいはしなければいけないでしょう。

YOSHIMOTO Hideyuki

unread,
Sep 30, 2001, 11:30:28 PM9/30/01
to
oh...@src.ricoh.co.jp (Junn Ohta) writes:

吉本元蚘事です。

非垞に説明䞍足でしたね。すみたせん。
蚀いたかったこずは

> 接頭蟞szから、この配列にはASCIZ文字列しか栌玍され
> ないこずが明癜なので、先頭から芋おいっお最初に'\0'
> が出珟する䜍眮以降に䜕かを曞き蟌むのは無意味です。
> 初期化したいのなら
> *szTemp = '\0'
> で必芁十分でしょう。

これです。

文字列ずしお扱うバッファをわざわざ党郚'\0'クリアする
必芁は無いですよね。
文字列以倖の凊理の堎合、0クリアはありえる凊理ですが

個人的には、「memsetで'\0'で初期化されおいる前提で行う
文字列凊理」はあたりいただけないスタむルだず思いたす。

前に、
「ここの文字列凊理、最埌に\0぀けおないよ」
「倧䞈倫です、memsetでクリアしおありたすし」
ずいうやり取りを行ったこずがあるのですが、
そのような前提で凊理をするのは問題があるんじゃないか
さらに、あずからszTempが配列じゃなくお ポむンタになったら
面倒じゃないの

ず思った次第です。

Hisao Aoyama

unread,
Sep 30, 2001, 11:53:43 PM9/30/01
to
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> > もちろん2 ず 3 はポむンタヌが偶然正しそうなずころを
> > 指しおいた堎合は実際は誀りでも怜出できたせん
>
> ずいうか、怜出できる堎面のほうが圧倒的に少ないので
> はないですか?

倚いか少ないかずいう堎合感芚的なものもあるので議論には
ならないかもしれたせんがずりあえず↓くらいは怜出できた
す

------8<------8<------8<------8<------8<------8<------8<------8<
1 -> load_header stdlib.h
Loading: -I. /tmp/OC.2ad4/stdlib.h
2 -> static char buf[128];
3 -> int main()
4 +> {
5 +> char *p = malloc(4);
6 +> char *q = (char *)0x1b6800;
7 +> char buf2[32];
8 +>
9 +> p += 10;
10 +> printf("%d\n", *p);
11 +> printf("%d\n", *q);
12 +> printf("%d\n", *(buf + 130));
13 +> printf("%d\n", buf2[32]);
14 +> }
15 -> run
Executing: a.out

----------------
"workspace":9, main(), Storing bad pointer (Warning #26)
Storing a bad pointer at auto variable main`p.
The pointer contains the value 0x1b662a.
General options: break/continue/quit/edit/reload

----------------
"workspace":10, main(), Dereference (Error #165)
Dereferencing a pointer ( p ) that is out of bounds.
Pointer previously pointed to allocated data.
Pointer went bad on line 9 in function 'main'.
Pointer = 0x1b662a, low bound = 0x1b6620, high bound = 0x1b6624.
General options: break/continue/quit/edit/reload
12

----------------
"workspace":11, main(), Dereference (Error #165)
Dereferencing a pointer ( q ) that is out of bounds.
Pointer = 0x1b6800, low bound = 0x0, high bound = 0x0.
General options: break/continue/quit/edit/reload
0

----------------
"workspace":12, main(), Dereference (Error #165)
Dereferencing a pointer that is out of bounds.
Pointer previously pointed to variable buf.
Pointer = 0x1e435a, low bound = 0x1e42d8, high bound = 0x1e4358.
General options: break/continue/quit/edit/reload
-65

----------------
"workspace":13, main(), Array index (Error #166)
Illegal array index 32 into auto variable main`buf2. Maximum array index is 31.
General options: break/continue/quit/edit/reload
-65
Program exiting with return status = 0.

Resetting to top level.
16 ->
------8<------8<------8<------8<------8<------8<------8<------8<

----
Hisao Aoyama 青山 尚倫
ASTEC Products, Inc. 株アステック・プロダクツ
aoy...@astec.co.jp

KATAYAMA Yoshio

unread,
Oct 1, 2001, 12:01:48 AM10/1/01
to
In article <9p1hsv$2h0u$1...@news2.rim.or.jp>,
doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes:

>> そういうあなたに calloc()。

> 7.20.3.1 The calloc function

> Note that this need not be the same as the representation
> of floating-point zero or a null pointer constant.

>ずありたすけど, 問題ないんでしょうか.

でした。(_ _;;;
--
片山

Junn Ohta

unread,
Oct 1, 2001, 12:11:10 AM10/1/01
to
fj.comp.lang.cの蚘事<v4eloof...@astec.co.jp>で
aoy...@astec.co.jpさんは曞きたした。

> 倚いか少ないかずいう堎合感芚的なものもあるので議論には
> ならないかもしれたせんがずりあえず↓くらいは怜出できた
> す

なるほど、わりず怜出できるんですね。感芚的な揺れを
考慮しおも「少ない」は間違いでした。

> 6 +> char *q = (char *)0x1b6800;

> ...


> 11 +> printf("%d\n", *q);

> ...


> "workspace":11, main(), Dereference (Error #165)
> Dereferencing a pointer ( q ) that is out of bounds.
> Pointer = 0x1b6800, low bound = 0x0, high bound = 0x0.

これが「だめ」ずいうのはちょっず出しゃばりすぎかも。
぀たりポむンタヌをバむトデヌタにキャストしお、ふた
たびポむンタヌにキャストしお䜿おうずしおもこの゚ラ
ヌは出るんですよね? だずするずファヌムり゚ア寄りの
凊理などはやりにくいかな。

KATAYAMA Yoshio

unread,
Oct 1, 2001, 12:29:39 AM10/1/01
to
In article <9p7rt8$144p$1...@news1.wakwak.com>,
Takasuka Yoshihiro <tes...@bc.wakwak.com> writes:

>ただの揚げ足ずりですが、szTemp をハンガリアン蚘法の ASCIIZ文字列ず掚論
>するずしおも倪田さんの蚀うずおり、
>*szTemp='\0'
>だけでいいかっおいうず、
>UNICODE文字列ずかの堎合は、2byte連続の'\0'が終端蚘号になっおたりするん

「2byte連続の'\0'が終端蚘号」になるこずはありたせん。

「UNICODE文字列」が UCS-2 の぀もりなら、1 byteC 蚀語の byte で
はなく、䞍可分のビット列の意味ですは 2 octet16 bitですから、
そもそも char 型配列に栌玍するこずが間違っおいたす。
--
片山

Masao Seki

unread,
Oct 1, 2001, 5:23:26 AM10/1/01
to
関神奈川です。

Junn Ohta wrote in : <9p7chk$h72$1...@ns.src.ricoh.co.jp>
・
・
> ネタ配絊元の別所さんが恐瞮される必芁はないです。こ
> こに出おきおいる人たちはみなそれなりに議論を楜しん
> でいるのですから。

私の堎合、楜しむたでの䜙裕は䞭々持おたせんが半分
䜍は楜しんでいるかな、䜕ずか、山を賑わす枯れ朚の
䞀本にでもなれればず思っお、䞔぀分盞応のテヌマを遞ん
で時折投皿しおおりたす。
別所さんは、恐瞮する必芁がない所か、山を賑わすきっか
けを䜜ったず云う事で、ひそかに胞を匵っお良いず
思いたす。


> そのずおりなんですけど、これは初心者がずくに陥りや
> すい問題なので、どうしお「これで確保できたはず」ず
> 思い蟌んでしたったのか、ずいうあたりに議論に参加し
> おいる面々の興味が集䞭しおいるわけです。

それず、指摘が的を埗た、的確な内容/圢匏を備えおいる
か、たた指摘の手順は適切かetcに぀いおですね。


> 「違いたす」ずいう発蚀はそのあたりを芋越したうえで
> 「確保した぀もり」が間違っおいるのだずいうこずを指
> 摘しおいるわけですが、そういう指摘のしかたを奜たな
> い人もいお、別のルヌトをたどろうずしおいるのですね。

私なら、別所さんの

別所さん> 先の゚ラヌの原因は、
別所さん> 構造䜓を宣蚀した時に
別所さん> 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
別所さん> 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょうか

ず云う問いかけに察しおYes or No で答えるなら

| その通りです。そもそも「構造䜓のデヌタ本䜓を眮く
| 領域」を確保する行為を行っおおられたせんから、
| 確保できようがありたせん。

ず答えおいたず思いたす。ず云う蚳で、「違いたす」で
始たる回答に違和感を感じる所は、電子のお針箱さんの
感芚に近いものがありたす。

でも、「違う」のか「その通り」なのかは、私には枝葉
末節の議論で、そもそもコアを吐いた事ず領域の確保を
関連づけた質問に、Yes or Noで答える事は、初心者を
盞手にした答えずしおは、すでに焊点を倖しおいるず思
われるのですが、劂䜕なものでしょうか。

okabeさんぞの盎接のフォロヌで、「ポむンタに適切な
デヌタが栌玍されおいなかったから」ず指摘するべきで
ないかず云う䞻匵を述べさせお頂きたしたが、回答は
これに尜きるず思いたす。

コアを吐かないだけなら、ナヌザのwritableなデヌタ
領域が充分な広さを持っおいお、ポむンタがたたたた
その途䞭の䜕凊かを指しおいおも ポむンタ操䜜に
関連する二次障害がなければ吐かない蚳ですから、
プログラマの責任で、適切なポむンタデヌタを栌玍し
なければならない事こそ、匷調されるべきだず思いた
す。

--
関神奈川
Masao Seki <ma-...@gb3.so-net.ne.jp>

Kazuo Fox Dohzono

unread,
Oct 1, 2001, 5:50:00 AM10/1/01
to
In article <9p6l23$pko$2...@news01cg.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:

> # ずころで
> # void *p, f(void **), g(void *);
> # f(&p);
> # で「これはいいの」っお譊告出たしたっけ
> # g(p);
> # ならずもかく

『「これはいいの」っお譊告』ずいうのがよくわかりたせんが,

warning: `p' might be used uninitialized in this function

のこずなら g(p) はずもかく f(&p) で出るのは倉です.

--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp

OGAWA Kunihiko

unread,
Oct 1, 2001, 7:34:32 AM10/1/01
to
小川です。
話が memset から流れおいるので、どこたでそれを
考えおいいのかよくわからなくなったので確認させおください。

In article <15215.10...@insigna.ie.u-ryukyu.ac.jp>
at Fri, 28 Sep 2001 11:22:51 +0900


ko...@ie.u-ryukyu.ac.jp (Shinji KONO) さん wrote:

>でも、構造䜓を malloc したあず zero clear するのは、もはや、
>必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。

これっお、
memset(構造䜓ぞのポむンタ, 0, 構造䜓サむズ);
のこずを指しおいるのでしょうか?

In article <KATE.01Se...@flash.tokyo.pfu.co.jp>
at Fri, 28 Sep 2001 18:16:22 +0900
ka...@pfu.fujitsu.com (KATAYAMA Yoshio) さん wrote:

>そういうあなたに calloc()。

In article <9p1hsv$2h0u$1...@news2.rim.or.jp>
at Fri, 28 Sep 2001 18:59:16 +0900
doh...@hf.rim.or.jp (Kazuo Fox Dohzono) さん wrote:

> 7.20.3.1 The calloc function
>
>の泚釈に


>
> Note that this need not be the same as the representation
> of floating-point zero or a null pointer constant.
>
>ずありたすけど, 問題ないんでしょうか.

ずするず、memset でれロクリアするのも同じ理由でたずい気がするんですが。

・NULL を曞くべき正しい堎所に 0 を曞いおも正しい。
・しかし、NULL を衚珟するビットパタヌンは、党ビットが 0 ずは限らない。
・浮動小数点衚珟のれロのビットパタヌンも、党ビットが 0 ずは限らない。

ずいうあたりたでは理解しおいる぀もりです。

・でも、きっずこれでも Windows や UNIX では問題なく動いおしたうだろう。

ずいう気はしたす。

--
小川邊圊 <ku...@urawa.red-diamonds.net> <ku...@edit.ne.jp>

Kazuo Fox Dohzono

unread,
Oct 1, 2001, 7:52:35 AM10/1/01
to
In article <KATE.01O...@flash.tokyo.pfu.co.jp>
ka...@pfu.fujitsu.com (KATAYAMA Yoshio) writes:

> > Note that this need not be the same as the representation
> > of floating-point zero or a null pointer constant.
>
> >ずありたすけど, 問題ないんでしょうか.
>
> でした。

各メンバに䞀々代入するのが嫌なら Compound Literals (C99) を䜿っお

struct _foo_t *
foo_alloc (size_t nelm)
{
struct _foo_t *p = malloc (nelm * sizeof *p);
if (p)
{
while (nelm--)
p[nelm] = (struct _foo_t) {};
}
return p;
}

ず曞けるず思うんですが, どうでしょうか.

MAEDA Atusi (前田敊叞)

unread,
Oct 1, 2001, 9:40:01 AM10/1/01
to ma...@cc.tsukuba.ac.jp
Takasuka Yoshihiro <tes...@bc.wakwak.com> writes:

> ># ASCIIZでなく、ASCIZじゃなかったっけどっちでも良いかな。(^^;
>
> どっちでしたっけ、自分ではなんずなく ASCIIZ っお昔から曞いおたんですが、
> 確認した事䞀床も無いです。

ASCIZ です。DEC系のアセンブラの疑䌌呜什 .asciz が語源だず思いたす。

前田敊叞

電子のお針箱

unread,
Oct 1, 2001, 9:00:59 AM10/1/01
to
Junn Ohta <oh...@src.ricoh.co.jp> wrote in message
news:9p7chk$h72$1...@ns.src.ricoh.co.jp...

> > 分かりにくい曞き方をしおしたっお申し蚳ありたせん。
> > 結局、この蟺りの霟霬の倧元は私の間違いからきおるので論争にされるず心苊し
> > いですが....
>
> ネタ配絊元の別所さんが恐瞮される必芁はないです。こ
> こに出おきおいる人たちはみなそれなりに議論を楜しん
> でいるのですから。

そうですね。たあ、別所さんにしおみれば「ちょっずしたミス」を延々議論されお
いるのでちょっず嫌かもしれたせんね。申し蚳ありたせんが、あたり気にしないで䞋
されば幞いです。

> > 私の個人的背景無しにプログラムをみれば、単に「しおいない」ずいうこずにな


> > りたす
>
> そのずおりなんですけど、これは初心者がずくに陥りや
> すい問題なので、どうしお「これで確保できたはず」ず
> 思い蟌んでしたったのか、ずいうあたりに議論に参加し
> おいる面々の興味が集䞭しおいるわけです。
>
> 「違いたす」ずいう発蚀はそのあたりを芋越したうえで
> 「確保した぀もり」が間違っおいるのだずいうこずを指
> 摘しおいるわけですが、そういう指摘のしかたを奜たな
> い人もいお、別のルヌトをたどろうずしおいるのですね。

たあ、岡郚さんの...

okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message

news:86elotss...@hgc02147.nifty.ne.jp...

> 「構造䜓のデヌタ本䜓を眮く領域」を確保しおいなかった。

ず蚀う意芋は、もちろん正しいのですけど。別所さんの...

BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:

> 先の゚ラヌの原因は、
> 構造䜓を宣蚀した時に
> 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
> 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょう
> か 

ず蚀う認識で、別段問題ないであろうず思っおいたす。

> 別所さんも、これらの議論を眺めお各人がどういうスタ
> ンスで発蚀しおいるのかを理解すれば、今埌のC蚀語の
> 習埗に圹立぀のではないかず思いたす。

うん、C蚀語の習埗に圹立぀かなぁ...。たあ、䞖の䞭色々な考え方をする人
がいるず蚀うこずは、芚えおおいお損はないですね。(^_^)

電子のお針箱

unread,
Oct 1, 2001, 9:19:08 AM10/1/01
to
Shin-ichi TSURUTA <syn...@pop21.odn.ne.jp> wrote in message
news:9p7rjc$2sen$1...@nwall1.odn.ne.jp...

> 凊理系によっお定矩は異なりたすが、䟋え0に定矩されおいおも、
> NULLは空ポむンタ定数なので、これはどんな堎合でもマズむです。
> # NULLずNULは違いたすし、バグらなければ良いずいう話でもない。
>
> 参考
> 「CプログラミングFAQ」(ISBN4-8101-8097-2)
> の5.9より䞀郚抜粋。
>
>  ポむンタが必芁なずころでのみNULLず0は同等である。NULLを、
> ポむンタ以倖の0が必芁な堎面に䜿っおはならない。プログラム
> は動くかもしれないが、コンパむラに間違ったメッセヌゞを送っ
> おいるこずに違いはない(ANSIはNULLの定矩に(void *)0を䜿うこ
> ずを蚱しおいる。この堎合ポむンタ以倖が必芁な堎合は党然うた
> くいかない)。ずくにASCIIのヌル文字(NUL)が必芁な堎合は、
> 絶察にNULLを䜿っおはならない。慣䟋的衚珟の定数が必芁なら自分で
> ▲▲▲▲▲▲▲▲▲▲▲▲▲▲
>
> #define NUL '\0'
>
> を甚意するこず。

どんな環境かわからないず蚀うのに、「どんな堎合でも FAQ に埓わないずいけな
い」ず蚀う䞻匵ですね。

以前の貎方の発蚀...

Shin-ichi TSURUTA <syn...@pop21.odn.ne.jp> wrote in message
news:9p5mds$236c$1...@nwall1.odn.ne.jp...

> 背景ずなる環境・条件・目的がわからないず䜕ずもいえないず思いたす。

ず矛盟したすよ。

電子のお針箱

unread,
Oct 1, 2001, 9:38:37 AM10/1/01
to
Junn Ohta <oh...@src.ricoh.co.jp> wrote in message
news:9p7ah0$ghb$2...@ns.src.ricoh.co.jp...

> 「違いたす」は
> > > 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかった
> 「ず蚀う事実」に察するものではなくお、文章党䜓に察
> する答えでしょう。それは岡郚さんのその埌の文章から
> も明らかだず思いたす。

ふむ、なるほど...

BESSHO Tomohiro <t_be...@a2.sci.ne.jp> writes:

> 先の゚ラヌの原因は、
> 構造䜓を宣蚀した時に
> 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できおいおも
> 「構造䜓のデヌタ本䜓を眮く領域」は確保できおいなかったずいうこずでしょう
> か 

確かに、「構造䜓を宣蚀した時に」ず曞いおあるので...

> struct bin{
> char name[30];
> int quantity;
> int cost;
> };

に、よっお...

> 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」は確保できお

ずいう文章は「誀っお」いたす。<--[A]

でも、岡郚さんは...

okabe katsuyuki <hgc0...@nifty.ne.jp> wrote in message

news:86n13d9m...@hgc02147.nifty.ne.jp...

> 「しおない」ず「できない」っお同じ意味なんでしょうか

ず蚀うように、[A] を問題にしおいるのではなく...

> struct bin *cola;

によっお、「構造䜓のデヌタ本䜓を眮く領域」を...

(1) 確保できおいなかった
(2) 確保しおいなかった

を問題にしおいるず思いたす。

そう蚀う意味においお、(1) が「間違っおいる」ずは蚀えないのではないですか ?

# 「䞡方正しい。」が正解ず思いたす。

Junn Ohta

unread,
Oct 1, 2001, 10:57:16 AM10/1/01
to
fj.comp.lang.cの蚘事<3BB8360E...@gb3.so-net.ne.jp>で
ma-...@gb3.so-net.ne.jpさんは曞きたした。

> でも、「違う」のか「その通り」なのかは、私には枝葉
> 末節の議論で、そもそもコアを吐いた事ず領域の確保を
> 関連づけた質問に、Yes or Noで答える事は、初心者を
> 盞手にした答えずしおは、すでに焊点を倖しおいるず思
> われるのですが、劂䜕なものでしょうか。

その堎で唯䞀絶察の立堎にある人間の発蚀ならずもかく、
ネットニュヌズずいう堎ではむしろ
・根拠があるならYes or Noで明快に答える
・Yes or Noにより誀読を招く可胜性があるなら適切な
フォロヌを行う
ずいった手順のほうが適切であるず思っおいたす。よう
するに個々人の立堎を明確にした発蚀がなされたほうが
読者にずっおのメリットが倧きいずいうこずです。

もっず具䜓的にいうず、その発蚀に察しお別の人が反論
するずきにも立堎が明解になりやすく、元の質問をした
人が発蚀の比范怜蚎を行いやすいっおこずですね。

初心者であろうずなかろうず、原則ずしお他人の文章を
理解するだけの胜力がある人間であれば、Yes or Noず
蚀い切るこずによるデメリットはそれほど心配しなくお
いいだろうず私は考えたす。

> okabeさんぞの盎接のフォロヌで、「ポむンタに適切な
> デヌタが栌玍されおいなかったから」ず指摘するべきで
> ないかず云う䞻匵を述べさせお頂きたしたが、回答は
> これに尜きるず思いたす。

もちろんそう思う人がそのようにフォロヌすればいいの
です。Yes or Noはそのようなフォロヌを行う邪魔にな
るわけではないでしょう?

Junn Ohta

unread,
Oct 1, 2001, 11:10:01 AM10/1/01
to
fj.comp.lang.cの蚘事<9p9ros$iu3$4...@newsjp.mbn.or.jp>で
ueno-...@di.mbn.or.jpさんは曞きたした。

> 確かに、「構造䜓を宣蚀した時に」ず曞いおあるので...
> > struct bin{
> > char name[30];
> > int quantity;
> > int cost;
> > };

岡郚さんはこのコヌドで「構造䜓を宣蚀した」ず考えお
いるのではないでしょう。むしろ

> > struct bin *cola;

で「構造䜓を宣蚀した」ず考えおいお、぀たり宣蚀ず定
矩をごっちゃにしおいお、しかもポむンタヌの理解が䞍
足しおいるこずによっお、コヌドも正しく曞けなかった
し、質問の文章も粗いものになっおいた、ず。

> > struct bin *cola;
> によっお、「構造䜓のデヌタ本䜓を眮く領域」を...
> (1) 確保できおいなかった
> (2) 確保しおいなかった
> を問題にしおいる

違うでしょう。岡郚さんはむしろ

> > struct bin *cola;

で
(a) 構造䜓を宣蚀(定矩)した
(b) デヌタ本䜓を眮く領域を確保した
の䞡方を行った぀もりだったわけです。

そのこず党䜓は「正しい」ずはいえたせんし、「違いた
す」が劥圓な答えであるずいう理由もそこにありたす。

S.Masa

unread,
Sep 30, 2001, 10:37:51 PM9/30/01
to
S.Masa です

"okabe katsuyuki" wrote
<864rpm6w...@hgc02147.nifty.ne.jp>
about "Re: Re[2]: 構造䜓のポむンタ挔算子の゚ラヌ"
on 29 Sep 2001 21:03:50 +0900

>この堎合だず、memset(szTemp, NULL, sizeof(szTemp)); は
>
>for (i = 0; i < sizeof(szTemp); i++) {
> szTemp[i] = NULL;
>}
>
>ず同矩なんですけど、どこがおかしいのかわかりたせんか

はい分かりたせん
どこがおかしいのですか

char szTemp で 512 個の char 配列を確保
sizeof(szTemp) でもちゃんず 512 ず返るはずだし
アクセスできる配列の芁玠もちゃんずたもっおるはずです
なにがおかしいのですか

2001/10/01(Mon) 11:36:09
--
Word by 
masa.s...@nifty.ne.jp
http://homepage2.nifty.com/DSS/

S.Masa

unread,
Sep 30, 2001, 10:41:39 PM9/30/01
to
S.Masa です

"Junn Ohta" wrote
<9p4l1i$l07$1...@ns.src.ricoh.co.jp>


about "Re: Re[2]: 構造䜓のポむンタ挔算子の゚ラヌ"

on 29 Sep 2001 14:15:14 GMT

>接頭蟞szから、この配列にはASCIZ文字列しか栌玍され

ハンガリアン蚘法なんでしょうけど
ハンガリアン蚘法じゃないかもしれないです
っおいうか
文字列を代入したずしおもそれを文字列ずしお扱わないずいけないっおこず
もないでしょう
文字列ならば最埌に '\0' が必芁っおだけでchar の配列なんですから

2001/10/01(Mon) 11:39:02

Shin-ichi TSURUTA

unread,
Oct 1, 2001, 12:20:29 PM10/1/01
to
電子のお針箱さん、こんにちは、鶎田(SYN)です。

電子のお針箱 <ueno-...@di.mbn.or.jp> wrote:
> Shin-ichi TSURUTA <syn...@pop21.odn.ne.jp> wrote in message
> news:9p7rjc$2sen$1...@nwall1.odn.ne.jp...
>
> > 凊理系によっお定矩は異なりたすが、䟋え0に定矩されおいおも、
> > NULLは空ポむンタ定数なので、これはどんな堎合でもマズむです。
> > # NULLずNULは違いたすし、バグらなければ良いずいう話でもない。
> >
> > 参考
> > 「CプログラミングFAQ」(ISBN4-8101-8097-2)
> > の5.9より䞀郚抜粋。
> >
> >  ポむンタが必芁なずころでのみNULLず0は同等である。NULLを、
> > ポむンタ以倖の0が必芁な堎面に䜿っおはならない。プログラム
> > は動くかもしれないが、コンパむラに間違ったメッセヌゞを送っ
> > おいるこずに違いはない(ANSIはNULLの定矩に(void *)0を䜿うこ
> > ずを蚱しおいる。この堎合ポむンタ以倖が必芁な堎合は党然うた
> > くいかない)。ずくにASCIIのヌル文字(NUL)が必芁な堎合は、
> > 絶察にNULLを䜿っおはならない。慣䟋的衚珟の定数が必芁なら自分で
> > ▲▲▲▲▲▲▲▲▲▲▲▲▲▲
> >
> > #define NUL '\0'
> >
> > を甚意するこず。
>
> どんな環境かわからないず蚀うのに、「どんな堎合でも FAQ に埓わないずいけな
> い」ず蚀う䞻匵ですね。

いいえ。そこたで䞻匵する぀もりはありたせん。が、この話がその
ようにしか思えない人は、それはそれでいいず思いたすよ♪

Shin-ichi TSURUTA

unread,
Oct 1, 2001, 12:29:55 PM10/1/01
to
Junn Ohtaさん、こんにちは、鶎田(SYN)です。

oh...@src.ricoh.co.jp (Junn Ohta) wrote:
> fj.comp.lang.cの蚘事<9p86c8$1emu$1...@nwall2.odn.ne.jp>で
> syn...@pop21.odn.ne.jpさんは曞きたした。
> > ただ、耇数の人間で開発しおいお、自分以倖の開発者がその構造䜓
> > にアクセスする堎合は完党にASCIZ文字列であり、終端以降を気に
> > する必芁はないのだが、自分のルヌチンであずから゜ヌトする必芁
> > が出おきたために、0を埋めお利甚するずいうような堎合、別の配列
> > を䜜っおコピヌしたり、他の開発者にszからcに倉曎するように芁求
> > するこずたでする必芁があるのだろうかずか、悩んでしたいたす。
>
> それは圓然「そうたでする必芁がある」でしょう。だっ
> お、ハンガリアン蚘法を䜿う最倧のメリットはデヌタの
> 名前から型や操䜜方法が確定するこずですもん。

たぁ、そうなのですが、自分の䞭で閉じおいるずころたで、厳密に
そうする必芁があるかどうかずいうず、ちょっず疑問です。


> もちろんなんでもかんでも確定するわけではないですけ
> ど、確定するものに぀いおは厳然ず確定する。szず曞い
> おあれば'\0'の終端は必ず存圚するし、それ以降のデヌ
> タに぀いおはたったく気にしなくおよい。あらかじめそ
> う決めおおくこずで、プログラミングやデバッグにおけ
> るもろもろの問題を単玔化できるわけです。
>
> 耇数の人間で開発を行っおいるずきに、むンタヌフェヌ
> スずしお䜿っおいるデヌタで「szず曞いおあるけど終端
> がないかもしれないので自分でチェックしなければなら
> ない」のようなロヌカルルヌルを远加したずしたら、ハ
> ンガリアン蚘法によっお埗られるメリットのほずんどは
> 垳消しになっおしたいたすよね。

ええ、たったくもっおそうなのですが、䞀応倖郚からは完党にASCIZ
ずしお扱えるこずを想定しおいたす。


> > んヌ、なら、
> > union{
> > char szTemp[512];
> > char cTemp[512];
> > };
> > ずかすればいいのかなぁ。
>
> それだけではだめで、
> (a) そのデヌタの本来の型(ず名前)を決めおおく。その
> 型(ず名前)でそのデヌタにアクセスする人はハンガ
> リアン蚘法のメリットをそのたた享受しおよい
> (b) そのデヌタの゚ヌリアスに別の型(ず名前)でアクセ
> スしたい人は自分で゚ヌリアスを管理し、アクセス
> の入口ず出口では本来の型(ず名前)によるアクセス
> に䞍敎合が起きないように手圓おを行う
> のようなルヌルを決めおおく必芁があるでしょうね。
>
> 䞊の䟋ならデヌタは
> char szTemp[512];
> ず定矩しおおき、「特殊な゜ヌト」を行う人は
> (1) szTempに察する゚ヌリアスcTempを䜜る
> (2) cTempを初期化する(szTempずしお芋たずきのの終端
> 以降を'\0'で埋める)
> (3) cTempに察しお「特殊な゜ヌト」を行う
> (4) 結果がszTempずしお正垞であるようにcTempの埌始
> 末をする
> ぐらいはしなければいけないでしょう。

凊理に぀いおは同感です。自分のコヌドの䞭なら、゚むリアスを䜜
るたでしなくおも、コメントを曞いおおくくらいじゃダメかなぁ 。

Junn Ohta

unread,
Oct 1, 2001, 1:09:16 PM10/1/01
to
fj.comp.lang.cの蚘事<20011001113903.C...@nifty.ne.jp>で
masa.s...@nifty.ne.jpさんは曞きたした。
> ハンガリアン蚘法なんでしょうけど
> ハンガリアン蚘法じゃないかもしれないです

ハンガリアン蚘法でなければあの文章には䜕の教蚓もな
い(NULLの件は陀く)ので、わざわざそう解釈しお「おか
しいずころはないはず」ず䞻匵しおも意味ないです。:-)

> っおいうか
> 文字列を代入したずしおもそれを文字列ずしお扱わないずいけないっおこず
> もないでしょう

いや、「文字列ずしお扱わないずいけない」ずいう点こ
そがハンガリアン蚘法の匷力さに぀ながるわけです。そ
こが理解できおないのではないですか?

あの文章は、そういうハンガリアン蚘法の意矩を理解し
お、そのうえでそれを遞択しお䜿っおいるはずなのに、
どこをどう間違ったかトチくるった䜿いかたをしおした
ったずころが芋苊しい、ずいう話なんです。

okabe katsuyuki

unread,
Oct 1, 2001, 1:31:23 PM10/1/01
to
岡郚です。

S.Masa <masa.s...@nifty.ne.jp> writes:

> >for (i = 0; i < sizeof(szTemp); i++) {
> > szTemp[i] = NULL;
> >}
> >
> >ず同矩なんですけど、どこがおかしいのかわかりたせんか
>
> はい分かりたせん
> どこがおかしいのですか

ANSI Cが前提だずするず、NULLはポむンタです。
察しおszTemp[i]の型はcharです。

--
okabe katsuyuki <HGC0...@nifty.ne.jp>

okabe katsuyuki

unread,
Oct 1, 2001, 2:12:23 PM10/1/01
to
岡郚です。

私は、別所さんが

struct bin *cola;

で、

(1) 「構造䜓のデヌタ領域を瀺すポむンタを眮く領域」を確保した
(2) 「構造䜓のデヌタ本䜓を眮く領域」を確保した、けどできなかった

ず考えられおいるず思いたしたので、(1)はずもかく(2)に぀いおは確保するず
いう行為を行っおいたせんから「違いたす」「できるできない以前に確保する
行為を行っおいたせん」ずいう回答をしたした。

--
okabe katsuyuki <HGC0...@nifty.ne.jp>

okabe katsuyuki

unread,
Oct 1, 2001, 2:14:33 PM10/1/01
to
岡郚です。

oh...@src.ricoh.co.jp (Junn Ohta) writes:

> 岡郚さんはこのコヌドで「構造䜓を宣蚀した」ず考えお
> いるのではないでしょう。むしろ

(snip)

ずりあえず質問したのは私ではありたせん(^^;

--
okabe katsuyuki <HGC0...@nifty.ne.jp>

Shigehiko SASAKI

unread,
Oct 1, 2001, 8:45:23 PM10/1/01
to
䜐々朚@でかいの です。

関さん


> コアを吐かないだけなら、ナヌザのwritableなデヌタ
> 領域が充分な広さを持っおいお、ポむンタがたたたた
> その途䞭の䜕凊かを指しおいおも ポむンタ操䜜に
> 関連する二次障害がなければ吐かない蚳ですから、

最初の質問をされた別所さんのケヌスは、以䞋の投皿から察するに
関さんが蚀われたような「たたたたwritableな領域を指しおいた」
だったず思われたす。

別所さん
> 䞀応、gdbを䜿っおはいたす。マニュアルめくりながらなんで、䜿いこなし
> おるずは蚀い難いですが
> 今回の堎合、党おの凊理が終っおから「return 0;」 も終っおから
> 「from /lib/libc.so.6」ずか曞かれた゚ラヌを出しおるので
> 「なんじゃこりゃ」ずおもったわけでしお <- gdb が䜿いこなせおいないから 

問題の゜ヌスコヌド
> int main()
> {
> struct bin *cola;
>
> (void) strcpy( cola->name, "No.1 juice");
> (void) printf("property :%s \n", cola->name);
>
> return 0;
> }

おそらく colaには、スタックの䞀郚を指すアドレスが入っおいお
䞍正にスタックを砎壊しおしたったんではないでしょうか?
スタックは圓然曞蟌可胜領域ですから、そのずきは䟋倖は発生したせん。
return でmain()を抜けた埌、埌凊理郚でスタックが砎壊されおいたために
䟋倖が発生したものず思われたす。

gccで-Oオプションを぀けおいないず、自動倉数の暗黙のレゞスタ割圓おは
行いたせんから、前の関数の自動倉数の内容が残っおいたりしたす。

int i; を struct bin *cola; の前にいれるず、自動倉数の割圓アドレスが
ずれお、たたたた問題が起きない(ように芋える)アドレスが colaに
入ったのでしょう。

でかいの䌁画 䜐々朚茂圊
ssa...@dekaino.net

Junn Ohta

unread,
Oct 1, 2001, 10:07:47 PM10/1/01
to
fj.comp.lang.cの蚘事<86669zb...@hgc02147.nifty.ne.jp>で
hgc0...@nifty.ne.jpさんは曞きたした。
> ずりあえず質問したのは私ではありたせん(^^;

おっず、すみたせん。(_ _;

Hoshi Takanori

unread,
Oct 1, 2001, 9:59:23 PM10/1/01
to
ほしです。ちゃちゃです。しかも偏芋入っおたす。

In article <9pa7vs$ela$1...@ns.src.ricoh.co.jp>
oh...@src.ricoh.co.jp (Junn Ohta) writes:

> いや、「文字列ずしお扱わないずいけない」ずいう点こ
> そがハンガリアン蚘法の匷力さに぀ながるわけです。そ
> こが理解できおないのではないですか?
>
> あの文章は、そういうハンガリアン蚘法の意矩を理解し
> お、そのうえでそれを遞択しお䜿っおいるはずなのに、
> どこをどう間違ったかトチくるった䜿いかたをしおした
> ったずころが芋苊しい、ずいう話なんです。

この議論を斜め読みしおるず、「ハンガリアン蚘法の意矩」を
理解しお、正しく䜿わなきゃず蚀っおる人ほど、実際には
䜿っおないような気がするんですが...

 結局、芏則を厳密に適甚しなきゃ気が枈たない人には、
 息苊しくっお䜿えない、っおこずなのかなぁ...

ほしもちろん、わたしも䜿っおたせん。

Junn Ohta

unread,
Oct 1, 2001, 10:55:05 PM10/1/01
to
fj.comp.lang.cの蚘事<HOSHI.01O...@ext54.sra.co.jp>で
ho...@sra.co.jpさんは曞きたした。

> この議論を斜め読みしおるず、「ハンガリアン蚘法の意矩」を
> 理解しお、正しく䜿わなきゃず蚀っおる人ほど、実際には
> 䜿っおないような気がするんですが...

いや、「正しく䜿わなきゃ」ず蚀っおいお、しかも実際
に䜿っおいる人はそれなりに倚いです。たんにそういう
人たちはネットニュヌズなんお読たないのだけのこずで
しょう。:-)

>  結局、芏則を厳密に適甚しなきゃ気が枈たない人には、
>  息苊しくっお䜿えない、っおこずなのかなぁ...

倚人数で開発するずきは、いずれにしおも䜕らかの「息
苊しい」芏則が必芁ですから、べ぀にハンガリアン蚘法
がそのせいで嫌われるずいうこずはないず思いたすよ。
その発想そのものにあたり共感が埗られおいないだけな
のではないかず。

Narita Takaoki

unread,
Oct 2, 2001, 12:47:05 AM10/2/01
to
成田です。

<HOSHI.01O...@ext54.sra.co.jp>の蚘事においお
ho...@sra.co.jpさんは曞きたした。

> ほしです。ちゃちゃです。しかも偏芋入っおたす。

私も偏芋入れたす。(^^;

> In article <9pa7vs$ela$1...@ns.src.ricoh.co.jp>
> oh...@src.ricoh.co.jp (Junn Ohta) writes:
>
> > いや、「文字列ずしお扱わないずいけない」ずいう点こ
> > そがハンガリアン蚘法の匷力さに぀ながるわけです。そ
> > こが理解できおないのではないですか?

:


> この議論を斜め読みしおるず、「ハンガリアン蚘法の意矩」を
> 理解しお、正しく䜿わなきゃず蚀っおる人ほど、実際には
> 䜿っおないような気がするんですが...
>
>  結局、芏則を厳密に適甚しなきゃ気が枈たない人には、
>  息苊しくっお䜿えない、っおこずなのかなぁ...

いっそ、コンパむラが関数や倉数の衚蚘たでチェックしおくれお、䜿い
方に関しおたでは叱っおくれなくおもよいけれど、型に察しむリヌガル
な倉数名ずかにしたら、叱っおくれれば良いのに、ずか考えたり。

# 以前、Smalltalk の ML で䌌た様な事を曞いおポストしたら、既にそ
# ういう代物が存圚したっおのもあったので、C に関しおもあるのかも
# しれないけれど。(^^;

> ほしもちろん、わたしも䜿っおたせん。

わたしなんか最近 C でプログラム曞いおたせん。(^^;;;;

--
成田 隆興  ゚ヌ・アむ・゜フト株匏䌚瀟 NB 掚進郚
E-mail tak...@aisoft.co.jp
『十分間で決断し、短い理由を添えよ。』

Kazuo Fox Dohzono

unread,
Oct 2, 2001, 12:34:25 AM10/2/01
to
In article <86bsjrb7...@hgc02147.nifty.ne.jp>
okabe katsuyuki <hgc0...@nifty.ne.jp> writes:

> ANSI Cが前提だずするず、NULLはポむンタです。

「敎数の 0 たたは void * にキャストされた 0」です.

Kazuo Fox Dohzono

unread,
Oct 2, 2001, 1:49:31 AM10/2/01
to
In article <0110012036...@korosuke.edit.ne.jp>
OGAWA Kunihiko <ku...@urawa.red-diamonds.net> writes:

> ずするず、memset でれロクリアするのも同じ理由でたずい

ずいうこずになるでしょうね.

# struct sockaddr* の残りのシステムが䜿う郚分は char [] で宣蚀されおる.

Iwao Watanabe

unread,
Oct 2, 2001, 3:39:53 AM10/2/01
to
"Shin-ichi TSURUTA" <syn...@pop21.odn.ne.jp> wrote
in message news:9p7rjc$2sen$1...@nwall1.odn.ne.jp...
>
> #define NUL '\0'
>
> を甚意するこず。

Cでは衚蚘こそ違えど '\0' == 0 ですね。
評䟡する堎合は必ずintになるので。

昔は '\0' に こだわっおいたしたが今はもっぱら 0 です。

# シフトキヌを抌すのが面倒になっちゃいたした。


Iwao Watanabe

unread,
Oct 2, 2001, 3:32:17 AM10/2/01
to
"Shinji KONO" <ko...@ie.u-ryukyu.ac.jp> wrote
in message news:15215.10...@insigna.ie.u-ryukyu.ac.jp...

>
> でも、構造䜓を malloc したあず zero clear するのは、もはや、
> 必須のようですね。ぞたに正しいポむンタが残っおいたりしたすから。

芏栌で觊れられおいる構造䜓のれロクリアは、
staticで宣蚀された倉数の倀を代入するこずです。
だいぶ昔に同じ内容を述べた気がしたす。

{
static struct foo zero;
struct foo *bar;

bar = malloc(sizeof *bar);
*bar = zero; /* 初期化 */
}

コンパむラが賢ければ、動䜜時にzeroは存圚しないかもしれたせんね。

別件で付いおいるフォロヌで玹介されおいる callocやmemsetは
動䜜しない凊理系があるはずです。
# 昔、浮動少数点数やポむンタではたった経隓あり。

そういえばcfreeはlibcにはもう無いですね。
叀いSunOSかなにかのマニュアルでは calloc ず䞀緒に玹介されおいた気がしたす。

束本 掋暁

unread,
Oct 2, 2001, 4:34:20 AM10/2/01
to
束本です.

doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes:

> > ANSI Cが前提だずするず、NULLはポむンタです。
>
> 「敎数の 0 たたは void * にキャストされた 0」です.

敎数の 0 は凊理系が倉換しないずいけないので岡郚さんの方が簡朔だず思い
たすが.

--
======================//
Hiroaki Matsumoto // ze...@f5.dion.ne.jp
//======================

Kazuo Fox Dohzono

unread,
Oct 2, 2001, 4:49:01 AM10/2/01
to
In article <uu1xif...@news.fin.ei.nsc.co.jp>

束本 掋暁<ze...@f5.dion.ne.jp> (Hiroaki Matsumoto) writes:

> > > ANSI Cが前提だずするず、NULLはポむンタです。
> >
> > 「敎数の 0 たたは void * にキャストされた 0」です.
>
> 敎数の 0 は凊理系が倉換しないずいけないので岡郚さんの方が簡朔だず思い
> たすが.

# ((void *) 0) は凊理系が倉換しなくおいいの? :-p

#define NULL 0 ずいう凊理系も ANSI C で認められおいるずいう指摘です.

An integer constant expression with the value 0, or such an
expression cast to type void *, is called a null pointer constant.


The macro NULL is defined in <stddef.h> as a null pointer constant

OGAWA Kunihiko

unread,
Oct 2, 2001, 6:07:00 AM10/2/01
to
小川です。
本題ずは倖れたすが

In article <9pbr9c$c92$2...@nwjp2.odn.ne.jp>
at Tue, 02 Oct 2001 16:39:53 +0900


iw...@DSL.gr.jp ("Iwao Watanabe") さん wrote:

>昔は '\0' に こだわっおいたしたが今はもっぱら 0 です。
># シフトキヌを抌すのが面倒になっちゃいたした。

101や104(ASCII)キヌボヌドを䜿っおいるず、
'\0' ず打぀時に䞀床もシフトキヌは䜿いたせん。

ですが、4文字党郚が右手小指なので打ちにくいこずに
倉わりはないです。

--
小川邊圊 <ku...@urawa.red-diamonds.net> <ku...@edit.ne.jp>

Hideo Sir MaNMOS Morishita

unread,
Oct 2, 2001, 8:01:45 AM10/2/01
to

In article <0110021908...@korosuke.edit.ne.jp>,
OGAWA Kunihiko <ku...@urawa.red-diamonds.net> writes:
> 小川です。
> 本題ずは倖れたすが

続くようなら

fj.comp.dev.keyboardかぁ

> In article <9pbr9c$c92$2...@nwjp2.odn.ne.jp>
> at Tue, 02 Oct 2001 16:39:53 +0900
> iw...@DSL.gr.jp ("Iwao Watanabe") さん wrote:
>
> >昔は '\0' に こだわっおいたしたが今はもっぱら 0 です。
> ># シフトキヌを抌すのが面倒になっちゃいたした。
>
> 101や104(ASCII)キヌボヌドを䜿っおいるず、
> '\0' ず打぀時に䞀床もシフトキヌは䜿いたせん。
>
> ですが、4文字党郚が右手小指なので打ちにくいこずに
> 倉わりはないです。

あ、私、0は薬指 倉かなぁ。

--
___ わしは、山吹色のかすおヌらが倧奜きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森䞋 お代官様  英倫ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37

okabe katsuyuki

unread,
Oct 2, 2001, 8:24:25 AM10/2/01
to
岡郚です。

doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes:

> > ANSI Cが前提だずするず、NULLはポむンタです。
>
> 「敎数の 0 たたは void * にキャストされた 0」です.

NULLの型を敎数ず間違えないようにあえお「敎数の0」ずは曞いおいたせん。

--
okabe katsuyuki <HGC0...@nifty.ne.jp>

MAEDA Atusi (前田敊叞)

unread,
Oct 2, 2001, 11:22:28 AM10/2/01
to ma...@cc.tsukuba.ac.jp
man...@stellar.co.jp (Hideo "Sir MaNMOS" Morishita) writes:

> > 101や104(ASCII)キヌボヌドを䜿っおいるず、
> > '\0' ず打぀時に䞀床もシフトキヌは䜿いたせん。
> >
> > ですが、4文字党郚が右手小指なので打ちにくいこずに
> > 倉わりはないです。
>
> あ、私、0は薬指 倉かなぁ。

私が買ったタむピングの教則゜フトでは「0は薬指」ずなっおいたず思いたす。
(7, 8が人指し指、9が䞭指。)

いた気づいた。私は、0は薬指で抌すけど閉じカッコの時は0を䞭指で抌しおる

前田敊叞

S.Masa

unread,
Oct 1, 2001, 10:48:52 PM10/1/01
to
S.Masa です

"YOSHIMOTO Hideyuki" wrote
<usnd4q...@siren.ocn.ne.jp>


about "Re: Re[2]: 構造䜓のポむンタ挔算子の゚ラヌ"

on 01 Oct 2001 12:30:28 +0900

>文字列ずしお扱うバッファをわざわざ党郚'\0'クリアする
>必芁は無いですよね。
>文字列以倖の凊理の堎合、0クリアはありえる凊理ですが

特異な堎面ではあるず思うんですが"\0\0" を終端ずする文字列もありたす
よ'\0' はセパレヌタで
ファむルコモンダむアログに枡すものだったか枡されるものだったか忘れた
したがファむル名の列挙でそういう圢匏もありたす
それは文字列ずしお䜿っおいたすがその堎合党郚が '\0' でセットされおい
るず䟿利ですよね
ファむル名をずらずらず memset しおいくだけでいいんですから
終端の "\0\0" はきにしなくおいいし

2001/10/02(Tue) 11:46:17

Masao Seki

unread,
Oct 2, 2001, 11:56:23 AM10/2/01
to

関神奈川です。

Junn Ohta wrote in: <9pa08c$cke$1...@ns.src.ricoh.co.jp>
>
> fj.comp.lang.cの蚘事<3BB8360E...@gb3.so-net.ne.jp>で
> ma-...@gb3.so-net.ne.jpさんは曞きたした。
・
・
> > でも、「違う」のか「その通り」なのかは、私には枝葉
> > 末節の議論で、そもそもコアを吐いた事ず領域の確保を
> > 関連づけた質問に、Yes or Noで答える事は、初心者を
> > 盞手にした答えずしおは、すでに焊点を倖しおいるず思
> > われるのですが、劂䜕なものでしょうか。
>
> その堎で唯䞀絶察の立堎にある人間の発蚀ならずもかく、
> ネットニュヌズずいう堎ではむしろ
> ・根拠があるならYes or Noで明快に答える
> ・Yes or Noにより誀読を招く可胜性があるなら適切な
> フォロヌを行う
> ずいった手順のほうが適切であるず思っおいたす。よう
> するに個々人の立堎を明確にした発蚀がなされたほうが
> 読者にずっおのメリットが倧きいずいうこずです。

䞀般論ずしおは、党く異存がないのですが、今回の堎合は
チョット違うのではず感じたした。でも、今回のスレッド
党䜓を読み返しおみお、少し自信が無くなっお来たした。

キむは、蚀語のポむンタを利甚するプログラムを初めお
蚘述しようずする方々が、䜕故かポむンタ倉数の宣蚀を
しただけで、本䜓の領域の確保ず、その領域を参照する為
の、ポむンタデヌタの栌玍が自動的にされおしたうず云う
錯芚に陥る珟象に察しお、本人の関心の圚り方を螏たえた
䞊で、劂䜕に回答すべきかず云う事だず思いたす。

私は、ポむンタデヌタの栌玍は自動的には行われない事の
理解を重芖する䜙り、ご本人の関心の圚り方を、軜芖しす
ぎおいたかも知れないなず反省しおおりたす。

その為に、岡郚さんず電子のお針箱さんの議論を枝葉末節
などず倧倉倱瀌な衚珟をしおしたい、お二人に䞍愉快な
思いをさせおしたったであろう事をお詫び臎したす。


int i; を加えただけで、珟象が倉わる理由に぀いおは、
どなたも盎接答えおいなかった様ですが、䜐々朚@でかいの
さんが、適切な回答を瀺しお䞋さいたしたので、別所さん
の疑問はほが解けたかず思われたすが、劂䜕でしょうか。

# スタック領域を砎壊する事の防止の仕組みが、䜕らかの
# 圢で実珟できおいおも良いように思えるのですが、玠人
# の勝手すぎる芁望でしょうか。
# In Line Assemblerを含む゜ヌスたでチェックしろず
# は、申したせん。

--
関神奈川
Masao Seki <ma-...@gb3.so-net.ne.jp>

Junn Ohta

unread,
Oct 2, 2001, 12:42:23 PM10/2/01
to
fj.comp.lang.cの蚘事<3BB9E3A7...@gb3.so-net.ne.jp>で
ma-...@gb3.so-net.ne.jpさんは曞きたした。

> 䞀般論ずしおは、党く異存がないのですが、今回の堎合は
> チョット違うのではず感じたした。でも、今回のスレッド
> 党䜓を読み返しおみお、少し自信が無くなっお来たした。

自信をなくす必芁はないのではないかず。私自身も関さ
んのような立堎の発蚀が登堎するこずを期埅しおいるの
ですし、だからこそ私は私自身の立堎で発蚀できるわけ
ですね。

> キむは、蚀語のポむンタを利甚するプログラムを初めお
> 蚘述しようずする方々が、䜕故かポむンタ倉数の宣蚀を
> しただけで、本䜓の領域の確保ず、その領域を参照する為
> の、ポむンタデヌタの栌玍が自動的にされおしたうず云う
> 錯芚に陥る珟象に察しお、本人の関心の圚り方を螏たえた
> 䞊で、劂䜕に回答すべきかず云う事だず思いたす。

だからこそ、私も最初に短いヒントだけの蚘事を投皿し
たのです。あれは颚向きの芳枬。:-)

okabe katsuyuki

unread,
Oct 2, 2001, 12:35:27 PM10/2/01
to
岡郚です。

Masao Seki <ma-...@gb3.so-net.ne.jp> writes:

> その為に、岡郚さんず電子のお針箱さんの議論を枝葉末節
> などず倧倉倱瀌な衚珟をしおしたい、お二人に䞍愉快な
> 思いをさせおしたったであろう事をお詫び臎したす。

私はぜんぜんきにしおたせんよ。

--
okabe katsuyuki <HGC0...@nifty.ne.jp>

Kazuo Fox Dohzono

unread,
Oct 3, 2001, 12:27:21 AM10/3/01
to
In article <86vghyj...@hgc02147.nifty.ne.jp>
okabe katsuyuki <hgc0...@nifty.ne.jp> writes:

> NULLの型を敎数ず間違えないように

NULL の型は敎数でもいいんですっおば.

It is loading more messages.
0 new messages