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


Автор: GQU 31.8.2014, 08:09
Почему возвращается одно и тоже число?
p вроде как должен на другой участок памяти указывать
Код

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    int* p;
    int i;

    for(i=0; i<100000;i++){
        p=(int*)malloc(100000);
        printf("Videleno 100000 bait    \n");
        printf("%d  \n\n",*p);
    }
    return 0;
}


Автор: feodorv 31.8.2014, 08:59
Цитата(GQU @  31.8.2014,  09:09 Найти цитируемый пост)
Почему возвращается одно и тоже число?

Какое?

Цитата(GQU @  31.8.2014,  09:09 Найти цитируемый пост)
p вроде как должен на другой участок памяти указывать

Вы разименовываете указатель. А не выводите его значение:
Код

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
    int* p;
    int i;
    unsigned int total = 0; /* size_t */

    for( i=0; i<100000; i++)
    {
        if( (p = (int*) malloc(100000)) == NULL ) break;
        total += 100000;
        printf( "Videleno 100000 bait, total = %u\n", total);
        printf( "    p = %p\n", p);
    }

    return 0;
}

По адресу же, на который ссылается указатель после malloc, вполне может оказаться одинаковое число.

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