![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
![]()
смешной, пожалуй, вопрос, однако чар ведь вроде весит 1 байт, и уайд чар - два - твердо помню...
А как там получилось что char *a=new char [4]; //во намудрил ну ладно cout<<sizeof (a); // выводит 4. Думал думал так и не понял чего это он так... Тут не статика, поэтому выводит только сайзоф первого элемента ( char a[10] sizeof (a) равно будет 10, но в данном случае циферка будет 4 хоть 1000 чаров выделяй..)
С наилучшими пожеланиями.
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Может быть потому что ты не символ обьявил а указатель на массив символов.
А он 4 байта весит. Внимательнее свой код посмотри у тя там * стоит, а это УКАЗАТЕЛЬ
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
![]()
О_о действительно...
сделал так cout<<sizeof(*(a+2)); выдало 1. Тогда, получается 4 байта указатель весит изза 8-ми разрядной адресации 16-ти ричной системы чтоль?
С наилучшими пожеланиями.
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
4-байта это 32 бита. Причем тут 8-разрядная адресация?
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
![]()
при том что адрес имеет 8 разрядов : 0012FF80 это адрес первой ячейки.
Я просто предположил причину почему ук-ль весит 4 байта. ЗЫ я конечно понимаю что чем нубнее человек тем абсурднее его предположения XD XD, но раз так то скажите кто-нить истинную причину веса указателя >_<
С наилучшими пожеланиями.
Последний раз редактировалось Познающий; 09.12.2009 в 18:39. Причина: ЗЫ |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
![]()
В Windows семейства x86 используется модель памяти flat. В этой модели любой адрес описывается 32-битным значением(4 байта). Отсюда и теоретический максимум памяти, к которой обращается процесс ограничен 4 гигабайтами. 2^32=4 гигабайта (Практически из-за ограничений ОС не более 2-3-х ГБ). Так вот, указатель - это адрес какой-то переменной или функции в памяти(в данном случае массива), поэтому он и равен 4-м байтам
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
![]()
Вот!)))) спасибо большое))))
С наилучшими пожеланиями.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему так много весит?! | DIMANJ | Софт | 34 | 10.08.2012 11:29 |
помогите, пожалуйста, с удалением массива char в с++! | Mira-girl | Общие вопросы C/C++ | 2 | 09.11.2009 00:50 |
Конец числового массива char | Байт | Общие вопросы C/C++ | 4 | 04.02.2009 21:19 |
Возвращение массива символов char | ActioNs | Общие вопросы C/C++ | 3 | 10.01.2009 02:33 |
Максимальный элемент массива | j_Q | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 04.11.2008 22:48 |