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

realloc

24.08.2013, 14:51. Показов 691. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2013, 14:51
Ответы с готовыми решениями:

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

realloc
здраствуйте! решил накатать такой класс #include &lt;stdlib.h&gt; template &lt;typename TYPE&gt; ...

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

Realloc и цикл
Здравствуйте, у меня возникает проблема с этой функцией когда поступают на вход равные n n2. На...

9
1442 / 1323 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
24.08.2013, 14:57 2
Цитата Сообщение от slipp1 Посмотреть сообщение
данные должны перенестись?
они перенесли
Цитата Сообщение от slipp1 Посмотреть сообщение
но arr2 почему то пустой?
он не пуст
Цитата Сообщение от slipp1 Посмотреть сообщение
не пойму роботу realloc??
у тебя ошибка. использую for вместо while
0
13 / 12 / 9
Регистрация: 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
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:20 4
int занимает не 1 байт. malloc принимает параметром количество байт, а не элементов. Поэтому нужно передать ему (количество_элементов*sizeof(элемента))
0
13 / 12 / 9
Регистрация: 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
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:36 6
Цитата Сообщение от slipp1 Посмотреть сообщение
что не так с free?
Ты реалокнул первый пойнтер. Его очищать теперь не надо.
0
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
24.08.2013, 15:37  [ТС] 7
Цитата Сообщение от Nekto Посмотреть сообщение
Ты реалокнул первый пойнтер. Его очищать теперь не надо.
почему??
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
24.08.2013, 15:46 8
Цитата Сообщение от slipp1 Посмотреть сообщение
почему??
Потому что это не memcpy.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.08.2013, 15:56 9
Цитата Сообщение от slipp1 Посмотреть сообщение
почему??
потому что http://www.cplusplus.com/refer... b/realloc/
0
-=ЮрА=-
24.08.2013, 17:50     realloc
  #10

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2013, 17:50

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

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

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

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

Функция realloc
Начнем сразу с кода. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; int...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru