Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
передача массива char для инициализации свойства объекта
|
|||
|---|---|---|---|
|
#18+
Всем еще раз привет :) Сейчас пытаюсь сделать следующее. Есть структура: Код: plaintext 1. 2. 3. 4. Я в функции main() получаю значение, которым нужно заполнить это свойство. Код: plaintext 1. 2. 3. 4. 5. 6. Инициализация объекта происходит в отдельной функции: Код: plaintext 1. 2. 3. 4. И вот здесь я пробовал заполнять свойство [movieName] переданным в функцию значением. Сначала пробовал так: Код: plaintext 1. 2. 3. 4. 5. Но здесь, я как понимаю, просто скопировались указатели, и как только массив из функции main(), на который указывает movieName, будет удален, в свойстве movieName останется мусор. Сейчас делаю вот так: Код: plaintext 1. 2. 3. 4. 5. 6. Но в таком случае, я не могу почему-то удалить указатель Buff - [delete Buff] - а память оставить. Или если под указатели память выделяется в стеке, то их удалять не надо? Программа их сама подчистит? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2012, 23:57 |
|
||
|
передача массива char для инициализации свойства объекта
|
|||
|---|---|---|---|
|
#18+
MaximuS_G, Сам указатель удалять не надо. Надо удалять память куда он указывает. Если выделенный через new массив возвращается за пределы функции то обычно удаляет его вызывающий код. Ну а конкретно для ваших примеров я мало что могу сказать, т.к. они не являются валидными конструкциями языка. Например, здесь я так понимаю имелось в виду выделенное: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Ну так все правильно. Про аргумент вы не знаете что за массив - стат или дин, поэтому надо копировать в дин массив. А ответственный за удаление выделенного массива - вызывающий код, который будет из него читать: закончит работу со структурой - удалит. Но вообще обычно в С-стиле так не пишут. Обычно в функцию передается указатель на структуру которую надо инициализировать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 00:50 |
|
||
|
передача массива char для инициализации свойства объекта
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky , Спасибо большое за подробнее объяснение! Теперь все ясно. Код: plaintext 1. Единственный вопрос, Вы объявляете const char , а не просто char , для того, что бы перестраховаться, что в функции init массив movieName не будет изменен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 12:14 |
|
||
|
передача массива char для инициализации свойства объекта
|
|||
|---|---|---|---|
|
#18+
MaximuS_G, Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2012, 12:26 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2020667]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 269ms |

| 0 / 0 |
