Форум программистов, компьютерный форум CyberForum.ru

Размер строки указателя - C++

Восстановить пароль Регистрация
 
D_Ok
43 / 32 / 12
Регистрация: 11.02.2014
Сообщений: 134
28.04.2014, 09:10     Размер строки указателя #1
char *str = new char [10];
str = "123";
sizeof(str) - отображает размер указателя, а как вывести размер самой строки строки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
28.04.2014, 09:20     Размер строки указателя #2
Вы не путайте божий дар с яичницей.
Узнать размер си строки просто:
C++
1
2
char str[] = "blablabla";
len = sizeof(str) / sizeof(str[0]);
Если же вы динамически выделяете память, то так сделать нельзя. Да и зачем вы же в курсе какой объем вы выделяете.
D_Ok
43 / 32 / 12
Регистрация: 11.02.2014
Сообщений: 134
28.04.2014, 10:03  [ТС]     Размер строки указателя #3
Цитата Сообщение от Ilot Посмотреть сообщение
Если же вы динамически выделяете память, то так сделать нельзя. Да и зачем вы же в курсе какой объем вы выделяете.
насчет простой строки я знаю, интересует именно динамическое выделение, сейчас знаю да, а если я дальше по пересоздам с другой размер, чтобы не искать и не смотреть какой размер, есть ли функция позволяющая узнать размер строки? Но только не длину как показали вы, а именно размер в битах.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
28.04.2014, 10:20     Размер строки указателя #4
Вводите переменную в которой будете хранить размер выделенной памяти. Иначе по указателю это не удасться выяснить. Если я правильно понимаю выделением памяти занимается система и она хранит информацию о занятой и свободной памяти. Как эту информацию из нее вытянуть без понятия
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:21     Размер строки указателя #5
D_Ok, в стандарте языка такой возможности не предусмотрено, поэтому реально возможно только запомнить размер в момент выделения памяти, т.е. в момент вызова malloc. Для GNU опять же есть расширение http://man7.org/linux/man-pages/man3...le_size.3.html.
Jewbacabra
1787 / 1502 / 538
Регистрация: 24.04.2014
Сообщений: 4,215
28.04.2014, 10:23     Размер строки указателя #6
Тогда уж так надо делать:
C++
1
2
3
char *str = new char [10];
delete[] str;
str = "123";
или так
C++
1
2
char *str = new char [10];
strcpy(str, "123")
А узнать длину строки можно с помощью функции strlen
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:24     Размер строки указателя #7
Jewbacabra, так делать не надо.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.04.2014, 10:27     Размер строки указателя #8
fasked, как не надо? Всё правильно сказал! У автора ерунда написана - Jewbacabra исправил!
Цитата Сообщение от D_Ok Посмотреть сообщение
C++
1
2
char *str = new char [10];
str = "123";
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 10:29     Размер строки указателя #9
Kuzia domovenok, тут у всех ерунда написана А не надо записывать в неконстантный указатель строковый литерал. Хотя поправка, использующая strcpy, уже ближе к истине.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.04.2014, 11:15     Размер строки указателя #10
Цитата Сообщение от fasked Посмотреть сообщение
А не надо записывать в неконстантный указатель строковый литерал.
указатель на то и указатель. Хочу и указываю на что угодно. Хоть на стек, хоть на кучу, хоть на NULL хоть на литералы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 11:17     Размер строки указателя
Еще ссылки по теме:

C++ Как верно узнать размер указателя ?
C++ Возвращение указателя на начало первой строки
Размер указателя на разные типы данных C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
28.04.2014, 11:17     Размер строки указателя #11
Kuzia domovenok, так я и не спорю с тем, что указывать можно куда угодно. Проблема в том, что после такого объявления может возникнуть желание изменить что-либо в литерале, а это уже UB.
Yandex
Объявления
28.04.2014, 11:17     Размер строки указателя
Ответ Создать тему
Опции темы

Текущее время: 14:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru