Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

memcpy/CopyMemory + 2-мерный динамический массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможно ли так ? http://www.cyberforum.ru/cpp-beginners/thread143516.html
Нужен ваш совет. Правилен ли следующий код, и корректен ли будет указатель на массив ? WORD* Index; Index = new WORD ; for (int i=0;i<=NumParticles;i++) { Index=i*4; Index=(i*4)+1;
C++ Прога для вывода кодовой таблицы cp866 #include <conio.h> #include <iostream.h> int main() { int i; cout<<"Code table(cp866):"<<endl; for(i=0;i<=255;i++) cout<<endl<<"code: "<<i<<"\t"<<"simbol: "<<(char)(i); http://www.cyberforum.ru/cpp-beginners/thread143501.html
C++ Программа работает не полностью.
В классе по кординатим прямоугольника определить периметр, площать и длину сторон, учесть что стороны могут меняться. #include <conio.h> #include <iostream.h> #include <math.h> class...
Дайте содержательное определение операциям с последовательностью, стеком и очередью. C++
Дайте содержательное определение операциям с последовательностью, стеком и очередью. void F7(int k){ for (int i=0; SEQ!=0; i++); int c = SEQ; SEQ = SEQ; SEQ=c; } кому не трудно помогите...
C++ Игра на С++ http://www.cyberforum.ru/cpp-beginners/thread143485.html
Ну в общем нужна вам или нет, но всё равно выложу:) Это крестики-нолики. #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h>
C++ Исправьте ошибку Исправьте ошибку пожалуйста или подскажите где я допустил ошибку. Программа сортировки массива. вот код, а вот что оно мне выводит: вроде оно мне не показывает последний шаг сортировки и... подробнее

Показать сообщение отдельно
_lacrimosa_
1 / 1 / 0
Регистрация: 10.06.2010
Сообщений: 26

memcpy/CopyMemory + 2-мерный динамический массив - C++

10.06.2010, 01:02. Просмотров 5620. Ответов 11
Метки (Все метки)

Третий день в ступоре из-за ругательства компилятора. Есть проблема: нужно скопировать данные из одного двумерного динамического массива в другой. Создаю массив C(5 на 5) из нулей. Создаю массив D(5 на 5) из чисел от 1 до 25. Далее копирую из D в C все данные посредством memcpy (или CopyMemory). В итоге ошибка:"Attempt to access 100 byte(s) at 0x0106D858, that is at heap block 0x0106D858 which is only 20 bytes long."

Причём откуда 20 byte неясно - как буд-то максимум доступна 1 строка матрицы (20 байт). C и D явно занимают по 100 байт.

Функция без сбоев работает на одномерном динамическом массиве, а также статическом двумерном.

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
    int NUM = 5; float x = 1;
    float** C = new float* [NUM];
 
    for (int i = 0; i < NUM; i++)
        C[i] = new float [NUM];
 
    for (int i = 0; i < NUM; i++)
        for (int j = 0; j < NUM; j++)
            C[i][j] = 0;
 
    float** D = new float* [NUM];
 
    for (int i = 0; i < NUM; i++)
        D[i] = new float [NUM];
 
    for (int i = 0; i < NUM; i++)
        for (int j = 0; j < NUM; j++)
            D[i][j] = x++;
           
    int K = NUM*NUM*sizeof(float);
    memcpy(C,D,K); //либо так: CopyMemory(C,D,K);
 
    for (int i = 0; i < NUM; i++)
        delete[] C[i];
    delete [] C;
 
    for (int i = 0; i < NUM; i++)
        delete[] D[i];
    delete [] D;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru