![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
Строки в С\С++
|
Новый участник Сообщения: 39 |
При программировании строк в Visual C++ и под Linux я заметил такую штуку:
Если обявить строку как char* pch = "Some_string" то операция *pch = 'A' приводит к ошибкам выполнения. В Linux пишет Segmentation Fail т.е. ошибка обращения к памяти. И в тоже время объявление char pch[] = "Some_string" и операция *pch = 'A' отрабатывает нормально без всяких глюков. Может кто знает где здесь собака зарыта. Только если можно поподробнее. Я думаю это как-то связано с защитой памяти в ОС или что-то в этом духе |
|
Отправлено: 23:13, 05-04-2003 |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать Цитата:
vasketsov Преложенный код вывел %МB_-ьd при добавлении слова static, заработало, но в цикле использовать переменную не могу, потому что выведет на экран два раза 2йцукен а заранее предсказать количество строк в списке я не могу, не делать же массив глобальных переменных? Я правильно понял идею с глобальными пременными? Цитата:
![]() |
||
------- Отправлено: 22:52, 10-04-2003 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
glassMonk
Сообщения: n/a |
Так что я могу положить сколь угодно большое число в
char *point="asdfasdfsad....n" это както небезопасно получается. Меня почемуто это больше всего тревожит. А не обрашение к ниму. [s]Исправлено: glassMonk, 3:25 11-04-2003[/s] |
Отправлено: 03:15, 11-04-2003 | #22 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать Crew
Если AddString действительно может принимать pchar, можешь сделать так, вроде противопоказаний нет: Цитата:
|
|
------- Отправлено: 07:43, 11-04-2003 | #23 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать vasketsov
Цитата:
char* pch = "Some_String" память не выделяется? Но если попробовать вести строку в ЛЮБОМ месте программы то она выведится printf("%s\n", pch); Как так память не выделяется а функция выводит? |
|
Отправлено: 12:44, 11-04-2003 | #24 |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать vasketsov
Зачем мне это?. Мне строки днамически создавать надо. а так и AddString("Some string" ![]() Мне это вообще зачем нужно - это достаточно большая база с вопросами, где выбрав нужный ответ, нажав на кнопку с текстом ответа, уменьшаем время, затрачиваемое на прохождение теста. Вопросы берутся из базы, в виде переменных -естественно. VBMUSTDIE Я так для себя упростил, что записалась эта строка куда-то в ЕХЕ, компилятор делает вид что это обычный адрес, однако разрешает только читать из самого себя и только столько, сколько при компиляции отведено, и любые попытки поменять значения воспринимает как попытки поменять сам ЕХЕ. |
------- Отправлено: 22:15, 11-04-2003 | #25 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Crew
Сделай глобальный CList (или как там аналог std::list называется?) строк и заполняй его динамически по мере надобности. Цитата:
Цитата:
|
||
------- Отправлено: 22:40, 11-04-2003 | #26 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать VBMUSTDIE
Цитата:
Цитата:
2) Если только %s, то нетрудно видеть, чтоб можно вывести этот текст без дополнительного выделения памяти даже на стеке. Выводим текст до %s, потом аргумент, потом снова текст до %s, снова аргумент, и т.д. 3) Если есть %d и т.п., то сложнее, но память может выделиться внутри printf (особенно если ей на вход отдается свой нетривиальный объект) и освободиться там же. |
||
------- Отправлено: 23:10, 11-04-2003 | #27 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать glassMonk
Цитата:
|
|
Отправлено: 23:31, 11-04-2003 | #28 |
glassMonk
Сообщения: n/a |
Ответ оказался в цитате, я догадался сам.
|
Отправлено: 07:23, 13-04-2003 | #29 |
![]() Guest |
int len=strlen(name);
char* buffer = new char[2*sizeof(int)+len]; memcpy(buffer,&len,sizeof(int)); memcpy(buffer+sizeof(int),name,len); memcpy(buffer+sizeof(int)+len,&age,sizeof(int)); return buffer; почему после этого в буфере пусто? |
Отправлено: 18:09, 03-11-2003 | #30 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - Трей в 2 строки | .ExeRun | Microsoft Windows 7 | 2 | 31-12-2010 01:22 | |
.NET - перечисляемые строки | Surround | Программирование и базы данных | 3 | 05-10-2009 19:57 | |
MySQL - Автозамена строки из другой строки - trigger? procedure ? | BugZZ | Программирование и базы данных | 0 | 18-09-2009 09:51 | |
строки в С++ | rodman | Программирование и базы данных | 7 | 02-07-2004 12:54 |
|