Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 205

Memcpy - вылетает исключение

15.04.2014, 21:24. Показов 2184. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно добавлять в массив по одному элементу и при добавлении нового элемента динамически увеличивать память массива

но при копировании memcpy вылетает исключение - помогите понять причину

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <string>
 
int kol_vo = 0;   //кол-во эл-тов в массиве
int *point;       //указатель на массив
 
void changePointer()   
 {
    int *p = new int [kol_vo];      //выделяем новую память
    memcpy (p,point,sizeof(point)); //копируем из старого массива в новый       <-----вылетает
    delete point;                       //обнуляем старую память
    point = NULL;
    point = p;                           //присваиваем указателю адрес нового массива
 }
 void add(int value)                 //добавление нового элемента в массив
 {  
    ++kol_vo;                     //кол-во эл-тов увеличивается
 
    changePointer();           //присваиваем указателю адрес нового массива 
    int ind = kol_vo-1;         //индекс в массиве
    point[ind] = value;   //записываем эл-т в массив
 }
 
int main()
{
    point = new int[1];  //изначально память под 1 э-т массива
    point = NULL;
    
    int a = 10;    
    point[0] = a;   //записываем а в 1 ячейку массива
 
    int b = 20;
    add (b);       //добавляем  b в массив
 
    return 0;}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2014, 21:24
Ответы с готовыми решениями:

Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy
Бывает ли на практике такое, что код #define size 1000; // some value int x, y; /* ... */ memcpy(y, x, (size + 1) * sizeof(int)); ...

Не работает программа, вылетает исключение
в 39 строчке выскакивает ошибка &quot;Вызвано исключение по адресу 0x002F22E7 в Проект3.exe: 0xC0000005: нарушение прав доступа при записи по...

При вызове CreateWindow в функции вылетает необработанное исключение (найти и исправить ошибку)
При вызове CreateWindow в функции HRESULT Render_CreateWindow(LPCTSTR wclass, LPCTSTR wname, LPCSTR icon) { // Регистрация класса ...

4
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
15.04.2014, 21:28
mhg, вы же в 27 строке указываете на "пустоту", куда вы в 30й строке записываете значение?
1
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 205
15.04.2014, 22:06  [ТС]
спасибо огромное!

Добавлено через 30 минут
НОВЫЙ ВОПРОС!!!
а почему при распечатывании этого в массива между первым и последним элементом мусор???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string>
 
int kol_vo = 0;
int *point;
 
void changePointer()
 {
    int *p = new int [kol_vo];
    memcpy (p,point,sizeof(point));
    delete point;
    point = p;
 }
 void add(int value)
 {  
    ++kol_vo;
 
    changePointer();
    int ind = kol_vo-1;
    point[ind] = value; 
 }
 
int main()
{
    point = new int[1];
    
    int a = 10;
    point[0] = a;
 
    add (20);
    add (30);
    add (40);
 
    for (int i=0; i<3; i++)
        {
            std::cout<<"\n"<<point[i];
        }
    return 0;}
0
 Аватар для newb_programmer
238 / 238 / 113
Регистрация: 03.09.2011
Сообщений: 558
15.04.2014, 22:25
mhg,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
 
int kol_vo = 1;
int *point;
 
void changePointer()
 {
    int *p = new int [++kol_vo];
    memcpy (p,point,sizeof(point)*kol_vo);
    delete point;
    point = p;
 }
 void add(int value)
 {  
    changePointer();
    point[kol_vo-1] = value; 
 }
 
int main()
{
    point = new int[1];
    
    int a = 10;
    point[0] = a;
 
    add (20);
    add (30);
    add (40);
 
    for (int i=0; i<4; i++)
        {
            std::cout<<"\n"<<point[i];
        }
    system("pause");
    return 0;
}
1
2 / 2 / 1
Регистрация: 21.04.2013
Сообщений: 205
15.04.2014, 22:41  [ТС]
вы мне очень помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2014, 22:41
Помогаю со студенческими работами здесь

Список. Программа вылетает с сообщением "Необработанное исключение"
При дебаге, обнаружил, что это происходит в начале первого цикла. #include &lt;iostream&gt; #include &lt;vector&gt; #include...

Вылетает исключение
Всем привет! private void zedGraphControl1_MouseClick(object sender, MouseEventArgs e) { MasterPane masterPane...

Вылетает исключение
Есть класс Матрица. При работе вылетает исключение: Exception in thread &quot;main&quot; java.lang.NullPointerException at...

Почему вылетает исключение
Есть метод чтения данных из файла, есть свой класс исключение который выводит сообщение о неправильном формате файла. Делаю следующее: ...

Почему вылетает исключение ???
Всем привет. Полез тут поэкспериментировать с Binding и постоянно вылетает исключение. Я уже весь измучался не могу отловить почему. Может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru