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

realloc - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу нахождения произведения нечётных чисел из [a;b] http://www.cyberforum.ru/cpp-beginners/thread807583.html
Вот такие задачи надо сделать: 1.Составить программу нахождения произведения нечётных чисел из . Спасибo.
C++ почему выдаёт эту ошибку declaration terminated incorrectly? http://www.cyberforum.ru/cpp-beginners/thread807561.html
Не могу найти ошибку C++
Добрый день, вот простенькая задача: "В одном шаге от счастья" Вова купил билет в трамвае 13-го маршрута и сразу посчитал суммы первых трёх цифр и последних трёх цифр номера билета (номер у...
Рекурсия (решение уравнений) C++
Помогите написать программу используя рекурсию. Ниже прикреплён сам файл с уравнениями. За ранее спасибо.
C++ Ключ в сортировках http://www.cyberforum.ru/cpp-beginners/thread807535.html
часто вижу предложения с употреблением слова "Ключ", но как он выглядит или что он из себя представляет я понять не могу.
C++ Автоматизированная информационно-поисковая система «Справочник спортивного фаната» (ООП) Автоматизированная информационно-поисковая система «Справочник спортивного фаната» подробнее

Показать сообщение отдельно
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049

realloc - C++

13.03.2013, 17:29. Просмотров 511. Ответов 10
Метки (Все метки)

Доброго времени суток, есть код, в котором динамически выделяется память под массив, затем этот массив инициализируется с клавиатуры и выводится на элран, далее нужно с помощью уменьшить блок памяти, выделенный под массив вдвое, вот код:

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
// showarg.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <locale>
#include <stdlib.h>
using namespace std;
 
void main(int argc, char *argv[])
{
    wcout.imbue(locale(".866"));
 
    int size;
    wcout << L"Введите размерность массива: ";
        cin >> size;
 
    int *mas;
    mas = (int*)calloc(size, sizeof(int));          //выделяем память под массив
 
    wcout << L"\nВведите массив:\n";
    for(int i = 0; i < size; i++)
    {
        wcout << L"Введите элемент масива [" << i+1 << "]: ";
            cin >> mas[i];
    }
 
    wcout << L"\nВывод массива: ";
    for(int i = 0; i < size; i++)
        cout << mas[i] << " ";
 
    realloc(mas, ((sizeof(int) * size) / 2));           //сокращение выделенной памяти
 
    wcout << L"\nВывод массива: ";          //вывод массива после сокращения памяти
    for(int i = 0; i < size; i++)
        cout << mas[i] << " ";
 
    free(mas);
    cout << "\n\n";
}
Проблема в том, что у меня целые занимают 4 байта, когда я выделяю под массив из 4 элементов память, то выходит 16 байт, послы повторного использования realloc блок памяти должен уменьшиться в половину, вроде все правильно, однако при выводе массив хранит не 2 элемента а 3 и удаляется 3 а не 4... Благодарю за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru