Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > выделение места в динамической памяти


Автор: leviaphan 18.8.2008, 13:21
Есть такой код:
Код

// цель программы - вывести на консоль разницу в байтах между только созданными переменными в динамической памяти
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    const int size = 500;
    int* array[size];
    int counter[size];
    for (int i=0; i<size; i++)
    {
        array[i] = new int;
        counter[i]=(int)array[i];
    }
    
    for (int i=0; i<size-1; i++)
    {
        cout << counter[i+1]-counter[i] << '\t';
    }

    for (int i=0; i<size; i++)
    {
        delete array[i];
    }
    
    getch();
    return 0;
}

Компилировал в VC++ 2005.
Когда я запускаю программу через F5, результат всегда 64, когда через ctrl+F5 или кликая на exe-файле, 48. Чем объясняется такой результат?

Автор: cutwater 18.8.2008, 13:26
Вы элементы массива не инициализируете начальными значениями. Там естественно находится мусор. 

Автор: bsa 18.8.2008, 14:22
leviaphan, делай так:
Код
    for (int i=0; i<size; i++)
    {
        array[i] = new int(0);
        counter[i]=(int)array[i];
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)