@sddvxd

Почему выполнение программы завершается с ошибкой?

Добрый вечер. Функция копирует строку

inline void cpyp(char* destination, const char* source){
    while(*destination++ = *source++);
}

int main(int argc, char *argv[])
{
    char* pstr1 = "hello world!";
    char* pstr2;
    cpyp(pstr2, pstr1);
}


После 1 итерации вылетает Неизвестная ошибка с кодом -1073741823
  • Вопрос задан
  • 151 просмотр
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
И правильно делает, что вылетает. Память под копию строки не выделена, переменная pstr2 не инициализирована.
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега C
Седой и строгий
Указатель pstr2 не инициализирован ничем, а потому указывает на произвольную область памяти. В подавляющем большинстве случаев попытка записать что-либо куда попало приведёт к segmentation fault. Исправить можно инициализировав его указателем на область в куче:
char* pstr2 = malloc(13);
cpyp(pstr2, pstr1);
free(pstr2);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BacCM
@BacCM
C++ почти с рождения
Если код на с++ то забудьте про char* как что-то связанное со строками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы