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

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

15.04.2014, 21:24. Показов 2156. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru