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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
#1

realloc - C++

24.08.2013, 14:51. Просмотров 413. Ответов 9
Метки нет (Все метки)

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
#include <iostream>
using namespace std;
 
int main()
{
    int size=0;
    cout<<"enter size array: ";
    cin>>size;
 
    int *arr;
    int *arr2;
 
    arr=(int*)malloc(size+1);
 
    for(int i=0;i!=size;i++)
    {
        arr[i]=i;
        cout<<arr[i]<<endl;
    }
    
    //выделяю для arr2 половину arr, данные должны перенестись в arr2
    arr2=(int*)realloc(arr,size/2);
 
    //arr2 оказывается пустым
    int i=0;
    while(arr2[i]!='\0')
    {
        cout<<"enter"<<endl;
        cout<<arr2[i]<<" ";
        i++;
    }
 
    return 0;
}
выделяю память через malloc

выделяю другой блок памяти через realloc в два раза меньше чем первый

данные должны перенестись? но arr2 почему то пустой? не пойму роботу realloc??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 14:51     realloc
Посмотрите здесь:

realloc - C++
здраствуйте! решил накатать такой класс #include &lt;stdlib.h&gt; template &lt;typename TYPE&gt; class List { private: TYPE*...

realloc - C++
Доброго времени суток, есть код, в котором динамически выделяется память под массив, затем этот массив инициализируется с клавиатуры и...

Не выполняется realloc - C++
Вообщем, не могу понять в чем ошибка, malloc() работает, а realloc() выдает ошибки. Имеется собственный тип item (структура, в которой два...

malloc/realloc - C++
есть следующий код: mmlist=(_mathmod*)malloc(sizeof(_mathmod)); *mmlist=_mathmod(mm); int i=0; ...

Функция realloc - C++
Начнем сразу с кода. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; int main(void) { using namespace std; ...

malloc, realloc - C++
У меня задан одномерный динамический массив таким образом: int *m1=new int; //n-количество элементов, вводится пользователем Далее этот...

Функция realloc - C++
Помогите правильно записать функцию realloc /*9. Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitriy_M
1340 / 1221 / 112
Регистрация: 20.03.2009
Сообщений: 4,392
Записей в блоге: 11
24.08.2013, 14:57     realloc #2
Цитата Сообщение от slipp1 Посмотреть сообщение
данные должны перенестись?
они перенесли
Цитата Сообщение от slipp1 Посмотреть сообщение
но arr2 почему то пустой?
он не пуст
Цитата Сообщение от slipp1 Посмотреть сообщение
не пойму роботу realloc??
у тебя ошибка. использую for вместо while
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:12  [ТС]     realloc #3
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
43
#include <iostream>
using namespace std;
 
#include <cstdlib>
 
int main()
{
    int size=0;
    cout<<"enter size array: ";
    cin>>size;
 
    int *arr;
    int *arr2;
 
 
    arr=(int*)malloc(size+1);
 
    for(int i=0;i!=size;i++)
    {
        arr[i]=i;
    }
 
 
    for(int i=0;i!=size;i++)
    {
        cout<<arr[i]<<endl;
    }
    
    int newSize=size/2;
 
    arr2=(int*)realloc(arr,newSize+1);
 
    cout<<"new"<<endl;
    for(int i=0;i!=newSize;i++)
    {
        cout<<arr2[i]<<endl;
    }
 
    free(arr);
    free(arr2);
 
    return 0;
}
чего я не знаю?
что я не так делаю??
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:20     realloc #4
int занимает не 1 байт. malloc принимает параметром количество байт, а не элементов. Поэтому нужно передать ему (количество_элементов*sizeof(элемента))
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:24  [ТС]     realloc #5
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
#include <iostream>
using namespace std;
#include <cstdlib>
 
int main()
{
    int size=0;
    cout<<"enter size array: ";
    cin>>size;
 
    int *arr;
    int *arr2;
    
    arr=(int*)malloc(sizeof(int)*size+1);
 
    for(int i=0;i!=size;i++)
    {
        arr[i]=i;
    }
    
    for(int i=0;i!=size;i++)
    {
        cout<<arr[i]<<endl;
    }
    
    int newSize=size/2;
 
    arr2=(int*)realloc(arr,sizeof(int)*newSize);
 
    cout<<"new"<<endl;
    for(int i=0;i!=newSize;i++)
    {
        cout<<arr2[i]<<endl;
    }
 
    free(arr2);
    free(arr);
    
    return 0;
}
что не так с free?
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:36     realloc #6
Цитата Сообщение от slipp1 Посмотреть сообщение
что не так с free?
Ты реалокнул первый пойнтер. Его очищать теперь не надо.
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:37  [ТС]     realloc #7
Цитата Сообщение от Nekto Посмотреть сообщение
Ты реалокнул первый пойнтер. Его очищать теперь не надо.
почему??
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:46     realloc #8
Цитата Сообщение от slipp1 Посмотреть сообщение
почему??
Потому что это не memcpy.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.08.2013, 15:56     realloc #9
Цитата Сообщение от slipp1 Посмотреть сообщение
почему??
потому что http://www.cplusplus.com/reference/cstdlib/realloc/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 17:50     realloc
Еще ссылки по теме:

Malloc realloc и C++ - C++
Подскажите, в C++ 11 выделение памяти по прежнему &quot;нормально&quot; выделять с помощью malloc и изменять размер realloc ? Или это уже прошлое?...

аналог realloc() в С++ - C++
Здравствуйте. собственно вопрос:-существует ли таковой?

Альтернатива realloc ? - C++
Ищу способ динамически расширять массив объектов. В с++ использую new и delete, а перемешивать с ними сишные способы выделения памяти...

ошибка realloc C++ - C++
Как изменить размер выделенной памяти? (например выделено 15 байт, как в C++ увеличить размер выделенной памяти(&quot;перераспределить&quot;)) в...

Подводные камни realloc - C++
Всем привет. Пишу структуру данных, которая при определенных обстоятельствах может перераспределять динамическую память, при этом...


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
24.08.2013, 17:50     realloc
  #10

Не по теме:

C++ и malloc/realloc фэйспалм

Yandex
Объявления
24.08.2013, 17:50     realloc
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru