23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
|
||||||||||||||||
1 | ||||||||||||||||
strcpy/strcpy_s09.02.2010, 00:28. Показов 17412. Ответов 17
Метки нет (Все метки)
Добрый вечер!
Есть класс (упрощенно):
0
|
09.02.2010, 00:28 | |
Ответы с готовыми решениями:
17
Разница между strcpy_s и strcpy? Чем отличаются функции strcpy и strcpy_s Ошибка error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead Выдает ошибку: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead |
Maniac
|
||||||
09.02.2010, 00:36 | 3 | |||||
1
|
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
|
|
09.02.2010, 00:39 [ТС] | 4 |
В данном случае эта наклонная палка показывает, что при использовании как отстоящего слева выражения, так и справа стоящего.
0
|
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
|
|
09.02.2010, 00:41 [ТС] | 6 |
ISergey, спасибо. Но нужно обойтись без выделения памяти.
0
|
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
|
||||||
09.02.2010, 00:56 [ТС] | 8 | |||||
Ступил. Нужно просто переопределить указатель:
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
09.02.2010, 16:31 | 9 |
а можно вопрос про сам класс? вы собираетесь сделать класс строк данные которого нельзя было бы изменить?... мне кажется не выйдет.
В чем проблема создания пустой строки? Дополнительный if да и все. Кстати зачем делается len = strlen если далее не используется?
0
|
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
|
|
09.02.2010, 17:27 [ТС] | 10 |
Отвечаю. Это упрощенный вид класса, где оставилась только та часть, в которой был вопрос. Get-методы в нем реализованы
Мне этот класс был нужен для следующего. Я перевел статью документации Boost.Test, где рассматривается такой класс - его тестируют на разные входные параметры, а ссылки на исходники битые, вот я и делал свою реализацию, чтобы проверить корректность рассматриваемых в статье тестов.
0
|
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
|
||||||
14.06.2012, 15:54 | 11 | |||||
Возможно это не актуально, но я отвечу.
char* - это указатель на строку. Т.е. это переменная в один байт, в которой хранится адрес в оперативной памяти. Ты строку копируешь не в указатель, а в то место, куда он указывает(т. е. в кусок оперативной памяти, адрес начала которого хранится в указателе). Теперь важный момент: перед тем как использовать память, её нужно выделить, т. е. сказать операционной системе "Кусок памяти, на который указывает x размером n байт использует моя прога, и никакая другая!". Ваш указатель - не исключение. Вот правильный код класса:
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
14.06.2012, 17:47 | 12 |
Плутон, Феерично использовать с классами malloc. Браво!
Добавлено через 1 минуту
0
|
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
|
|
14.06.2012, 21:51 | 13 |
Привычка.
malloc выделяет память, не очищая её. Т.е. после выделения памяти инициализации нулём, как при new, не будет, и получится мусор. До нуля в какой строке?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
15.06.2012, 08:49 | 14 |
Плутон, В той из которой копируют, следовательно ту в которую копирует будет так же закрыта нулем, если размер строки из которой копируют не больше размера строки в которую копируют.
0
|
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
|
||||||
15.06.2012, 13:07 | 15 | |||||
Извиняюсь, ошибся.
nazavrik, вот новый код класса:
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
15.06.2012, 16:34 | 16 | |||||
При new тоже не будет никакой инициализации для стандартных типов, если только этого не указать явно таким образом:
1
|
13 / 13 / 5
Регистрация: 29.06.2011
Сообщений: 85
|
|
16.06.2012, 09:56 | 17 |
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.06.2012, 10:02 | 18 |
Тогда не вижу никаких причин для того, чтобы отдавать предпочтение malloc, а не new.
0
|
16.06.2012, 10:02 | |
16.06.2012, 10:02 | |
Помогаю со студенческими работами здесь
18
Использование strcpy_s Strcat или strcpy_s Недружелюбный strcpy_s и прочие *_s Не работает strcat_s с strcpy_s Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |