Почему использование памяти отличается, когда я просто изменить положение кода? - PullRequest
0 голосов
/ 27 июля 2011

malloc в строке A будет занимать больше памяти, чем строка B, почему? относится к pthread?

int main()
{
    char *buf = (char*)malloc(1024*1024*1024); //Line A
    memset(buf,0,sizeof(1024*1024*1024));
    pthread_t m_sockThreadHandle[8];
    for (int i=0;i<8;i++)
    {
      if ( pthread_create(&m_sockThreadHandle[i], NULL, thread_run, NULL) != 0 )
      {
        perror("pthread_create");
      }
    }
    sleep(10);
    char *buf = (char*)malloc(1024*1024*1024);//Line B
    memset(buf,0,sizeof(1024*1024*1024));
    for (int i=0;i<8;i++)
    {
      pthread_join(m_sockThreadHandle[i],NULL);
    }
}

1 Ответ

0 голосов
/ 27 июля 2011

Возможно, потому что это не делает то, что вы думали:

memset(buf,0,sizeof(1024*1024*1024));

sizeof(1024*1024*1024) - это 4 на моем компиляторе. Я думаю, что вы имели в виду:

memset(buf,0, 1024*1024*1024);

Из кода, который вы публикуете buf не используется, поэтому неясно, что вы пытаетесь сделать или почему. Но это, по крайней мере, неправильно ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...