Ошибка при использовании delete - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <iostream>
#include <stdio.h>
using namespace std;
 
    void main()
{
    char *ar=new char [128];
    ar="12345qwer";
    cout<<ar<<"\n";
    delete [] ar;
    }
Я даже не знаю откуда она может взяться (создал , присвоил ,очистил).

Решение задачи: «Ошибка при использовании delete»

textual
Листинг программы
#include <iostream>
#include <stdio.h>
using namespace std;
 
void main()
{
char *ar=new char [128];
 
// ar="12345qwer";
 
strcpy(ar, "12345qwer");
 
cout<<ar<<"\n";
delete [] ar;
}

Объяснение кода листинга программы

В этом коде:

  1. Создается массив символов типа char с размером 128 элементов и инициализируется нулевыми значениями.
  2. Используется функция strcpy для копирования строки 12345qwer в начало массива ar.
  3. Выводится содержимое массива ar с помощью оператора cout.
  4. Используется оператор delete для освобождения памяти, выделенной под массив ar. Проблема в этом коде заключается в том, что функция strcpy пытается скопировать строку в неизменяемый массив, что приводит к неопределенному поведению программы. Правильный способ копирования строки в массив символов - использовать функцию strncpy, которая копирует строку, не превышая размер целевого массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы