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

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

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

realloc - C++

24.08.2013, 14:51. Просмотров 431. Ответов 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??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос realloc (C++):

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-количество элементов, вводится пользователем Далее этот...

9
Dmitriy_M
1360 / 1243 / 114
Регистрация: 20.03.2009
Сообщений: 4,449
Записей в блоге: 11
24.08.2013, 14:57 #2
Цитата Сообщение от slipp1 Посмотреть сообщение
данные должны перенестись?
они перенесли
Цитата Сообщение от slipp1 Посмотреть сообщение
но arr2 почему то пустой?
он не пуст
Цитата Сообщение от slipp1 Посмотреть сообщение
не пойму роботу realloc??
у тебя ошибка. использую for вместо while
0
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:12  [ТС] #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;
}
чего я не знаю?
что я не так делаю??
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:20 #4
int занимает не 1 байт. malloc принимает параметром количество байт, а не элементов. Поэтому нужно передать ему (количество_элементов*sizeof(элемента))
0
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:24  [ТС] #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?
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:36 #6
Цитата Сообщение от slipp1 Посмотреть сообщение
что не так с free?
Ты реалокнул первый пойнтер. Его очищать теперь не надо.
0
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:37  [ТС] #7
Цитата Сообщение от Nekto Посмотреть сообщение
Ты реалокнул первый пойнтер. Его очищать теперь не надо.
почему??
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:46 #8
Цитата Сообщение от slipp1 Посмотреть сообщение
почему??
Потому что это не memcpy.
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.08.2013, 15:56 #9
Цитата Сообщение от slipp1 Посмотреть сообщение
почему??
потому что http://www.cplusplus.com/reference/cstdlib/realloc/
0
-=ЮрА=-
24.08.2013, 17:50     realloc
  #10

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 17:50
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
24.08.2013, 17:50
Ответ Создать тему
Опции темы

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