![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
В результате sizeof(buf) всегда равен 4, вне зависимости от того, чему равно statData.st_size. Если кол-во элементов указывать явно, типа buf=new char[300], то sizeof() выдаст 300, все как положено. То ли я билдер давно не видел, отвык, то ли хитрость тут какая... Добавлено @ 15:05 З.ы. компилятор - BCB 6.0 -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
buf это же указатель на массив. А величина указателя 4 байта и есть. Ты создаёшь некий массив динамически, а buf просто указывает на этот массив. Это сообщение отредактировал(а) sergej.z - 15.5.2004, 15:29 |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
Thnx!
Точно, я туплю... -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
| setq |
|
|||
|
Unregistered |
извините, sergej.z, ну и что?
нет правда не доходит: какая разница в первом и втором случае? Это сообщение отредактировал(а) setq - 15.5.2004, 15:29 |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
sizeof() определяется при компиляции, а откуда компилеру узнать размер массива, если тот меняется динамически в процессе программы.
Расчитать, какого массив размера, компилер сможет только если ты сразу обьявишь его величину. т.е
А такое, тоже работать скорее всего не будет (скорее всего, потому что теоретически можно было написать компилер, который такие случаи распознаёт, только не нужно это
Это сообщение отредактировал(а) sergej.z - 15.5.2004, 15:45 |
||||
|
|||||
| setq |
|
|||
|
Unregistered |
MuToGeN пишет:
<<Если кол-во элементов указывать явно, типа buf=new char[300], то sizeof() выдаст 300, все как положено>> sergej.z : << char* buf; buf=new char[300]; //В этом случае //sizeof(buf)=4; >> поэтому и возник вопрос. но в общем понял, спасибо |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: нет Всего: 32 |
-------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |