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

sizeof(char)

7 views
Skip to first unread message

Andrei Dzedolik

unread,
Apr 5, 2018, 2:25:04 PM4/5/18
to
Greetings, travelers ...

Пятничеего флейма ради, а не то, что вы подумали ;)

Что думает многоуважаемый All по поводу конструкции sizeof(char), скажем, при
malloc буфера под строку, т.е.:

char *buff = malloc(N*sizeof(char));

Как на ваш взгляд, имеет ли это хоть какой-то смысл?


\aID


Nil Alexandrov

unread,
Apr 5, 2018, 3:25:04 PM4/5/18
to
Hello, Andrei!

Thursday April 05 2018 17:55, from Andrei Dzedolik -> All:

AD> Что думает многоуважаемый All по поводу конструкции sizeof(char),
AD> скажем, при malloc буфера под строку, т.е.:
AD> char *buff = malloc(N*sizeof(char));
AD> Как на ваш взгляд, имеет ли это хоть какой-то смысл?

http://www.cs.technion.ac.il/users/yechiel/c++-faq/sizeof-char.html
sizeof(char) всегда 1, никогда не будет 2.

Там в этом факе ещё много вокруг этого есть.

Best Regards, Nil

Eugene Muzychenko

unread,
Apr 5, 2018, 4:45:03 PM4/5/18
to
Привет!

05 Apr 18 17:55, you wrote to All:

AD> char *buff = malloc(N*sizeof(char));
AD> Как на ваш взгляд, имеет ли это хоть какой-то смысл?

В этом - нет. Смысл есть в чем-нибудь вроде

char *buff = malloc (N * sizeof (*buff));

Смысл в том, чтобы при изменении типа правке подвергалось минимальное
количество элементов текста.

Если планируется когда-либо менять тип, то лучше сразу ставить вместо char
что-нибудь вроде char_t, TCHAR и подобного.

Всего доброго!
Евгений Музыченко
eu-...@muzy-chen-ko.net (все дефисы убрать)

Andrei Dzedolik

unread,
Apr 6, 2018, 3:15:04 AM4/6/18
to
Greetings, traveler ...

05 Apr 18 22:27, you wrote to me:


EM> В этом - нет. Смысл есть в чем-нибудь вроде

EM> char *buff = malloc (N * sizeof (*buff));

EM> Смысл в том, чтобы при изменении типа правке подвергалось минимальное
EM> количество элементов текста.

EM> Если планируется когда-либо менять тип, то лучше сразу ставить вместо
EM> char что-нибудь вроде char_t, TCHAR и подобного.

С другими типами как раз понятно, вопрос именно про sizeof(char), который даже
в военное время равен 1 :)


\aID


Andrei Dzedolik

unread,
Apr 6, 2018, 3:15:04 AM4/6/18
to
Greetings, traveler ...

05 Apr 18 22:14, you wrote to me:

AD>> Что думает многоуважаемый All по поводу конструкции sizeof(char),
AD>> скажем, при malloc буфера под строку, т.е.:
AD>> char *buff = malloc(N*sizeof(char));
AD>> Как на ваш взгляд, имеет ли это хоть какой-то смысл?

NA> http://www.cs.technion.ac.il/users/yechiel/c++-faq/sizeof-char.html
NA> sizeof(char) всегда 1, никогда не будет 2.

Я это знаю, но вот некоторые утверждают, что подбная конструкци добавляет
читаемости, мол сразу видно, что мы выделяем столько-то байт. При этом ни на
что не влияя, т.к. как ты веерно отметил,
sizeof(char) всегда равен 1 и компилятор его просто выпилит при сборке.

\aID


Eugene Muzychenko

unread,
Apr 6, 2018, 5:15:03 PM4/6/18
to
Привет!

06 Apr 18 06:55, you wrote to me:

AD> С другими типами как раз понятно, вопрос именно про sizeof(char),
AD> который даже в военное время равен 1 :)

Возможно, это написано в расчете на грязные хаки вроде "#define char wchar_t".
:)
0 new messages