Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
69 / 69 / 2
Регистрация: 10.05.2011
Сообщений: 174
1

Возникает Acces Violation

01.07.2012, 20:59. Показов 779. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Простая консольная прога в Builder С++ 2007, Win7 х64.
Смысл проги - изменить размер(количество элементов) простого массива.
Acces Violation возникает после второго вывода массива(размер уже изменен), причем только в том случае если размер нового массива меньше размера старого. Если размер нового массива больше старого, то ничего не возникает. В чем дело?
P.S. На ночь глядя быстренько состряпал прогу, так что может где-то косяк есть, но я не нашел.
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
39
40
41
42
#pragma hdrstop
 
//---------------------------------------------------------------------------
#include <conio.h>
#include <iostream>
#include <cyrToDos.h>
#include <string>
using namespace std;
 
#pragma argsused
int main()
{
    int N;
    int newN;
 
    cout<<cyrToDos("Введите N: ");
    cin>>N;
 
    int* array = new int[N];
    for(int i=0;i<N;++i)
    {
        array[i] = i*2;
        cout<<array[i]<<" ";
    }
    cout<<endl;
 
//  cout<<"sizeof array = "<<sizeof array<<endl;
 
    cout<<cyrToDos("Введите новое N: ");
    cin>>newN;
    int* newarray = new int[newN];
    memcpy(newarray,array,sizeof(int)*N);
    delete[] array;
    array = newarray;
    for(int i=0;i<newN;++i)
        cout<<array[i]<<" ";
    cout<<endl;
 
//    delete[] newarray;
    getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2012, 20:59
Ответы с готовыми решениями:

Acces violation at adress..
Дорого времени суток! Если Вас не затруднит, помогите, пожалуйста, решить проблему. Начала делать...

Acces violation at adress in module
По нажатию кнопки на form2 должно происходить появление компонента на form1 GridPanel, однако...

Почему пишет ошибку "Acces violation"?
Выводит ошибку &quot;Acces violation&quot;. Пожалуйста, помогите исправить. Или подскажите, где ошибка.

При попытке открыть базу-данных возникает ошибка "acces violation"
Доброго времени суток! Есть одна база данных из 100 элементов. При попытке её открыть возникает...

2
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.07.2012, 21:13 2
Думаю в этой строчке ошибка
C++
1
 memcpy(newarray,array,sizeof(int)*N);
Попробуй циклом копировать с учетом размеров обоих массивов
2
69 / 69 / 2
Регистрация: 10.05.2011
Сообщений: 174
01.07.2012, 21:41  [ТС] 3
Avazart, а вот в том то и дело, что мне надо именно memcpy() использовать. А если циклом копировать, то надо случаи рассматривать: когда размер нового больше, то копировать старое количество, а когда меньше, то копировать новое. Да вообще из принципа интересно в чем дело, действительно ли в memcpy()?

Добавлено через 17 минут
А ну кажись понял, как раз в этой строчке ошибка memcpy(newarray,array,sizeof(int)*N). Тут тоже надо смотреть какое количество копировать. Тема закрыта.
0
01.07.2012, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2012, 21:41
Помогаю со студенческими работами здесь

Acces violation
это просто капец если закомментировать считывание любого их двух параметров(5 или 6 строка)...

Acces Violation в dll
Добрый день. Иньекчу dll в процесс struct UL2ConsoleWnd {}; UL2ConsoleWnd *_consoleWnd =...

Fscanf Acces violation
Записываются числа float в файл, потом выводятся из файла и записываются в структуру. Запись...

Вылетает ошибка acces violation
procedure TForm1.Edit1Change(Sender: TObject); var i:integer; t:TStringList; function...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru