Articles of malloc

Diferença entre o tipo de array e array alocado com malloc

Hoje eu estava ajudando um amigo meu com algum código em C, e encontrei um comportamento estranho que não consegui explicar por que estava acontecendo. Nós tínhamos um arquivo TSV com uma lista de inteiros, com um int em cada linha. A primeira linha era o número de linhas que a lista tinha. Nós também […]

Substituindo ‘malloc’ usando o mecanismo LD_PRELOAD

Eu estou tentando escrever uma biblioteca compartilhada simples que registraria chamadas malloc para stderr (uma espécie de ‘mtrace’ se você quiser). No entanto, isso não está funcionando. Aqui está o que eu faço: /* mtrace.c */ #include #include static void* (*real_malloc)(size_t); void *malloc(size_t size) { void *p = NULL; fprintf(stderr, “malloc(%d) = “, size); p […]

Como o malloc () é implementado internamente?

Alguém pode explicar como malloc() funciona internamente? Eu tenho feito algumas vezes strace program e vejo um monte de chamadas de sistema sbrk , fazendo man sbrk fala sobre isso sendo usado em malloc() mas não muito mais.

Como alocar dinamicamente o espaço de memory para uma string e obter essa string do usuário?

Eu quero ler a input do usuário usando o programa C. Eu não quero usar array como, char names[50]; porque se o usuário fornecer uma string de tamanho 10, os espaços restantes serão desperdiçados. Se eu usar o ponteiro de caractere, char *names; então eu preciso alocar memory para isso de tal forma, names = […]

Crie uma function de wrapper para malloc e livre em C

Ei, eu estou tentando criar funções de wrapper gratuitamente e malloc em C para ajudar a notificar-me de vazamentos de memory. Alguém sabe como declarar essas funções assim quando eu chamo malloc () e free () ele vai chamar minhas funções personalizadas e não as funções de lib de padrões?

Como usar uma string C ++ em uma estrutura quando malloc () – a mesma estrutura?

Eu escrevi o seguinte exemplo de programa, mas ele falha com o segfault. O problema parece ser com o uso de malloc e std::string s na estrutura. #include #include #include struct example { std::string data; }; int main() { example *ex = (example *)malloc(sizeof(*ex)); ex->data = “hello world”; std::cout <data << std::endl; } Eu não […]

Por que o malloc não está “consumindo” a memory do meu computador?

Então eu tenho este programa que aloca 256 MB de memory, e depois que o usuário pressiona ENTER libera a memory e termina. #include #include int main(void) { char *p, s[2]; p = malloc(256 * 1024 * 1024); if ( p == NULL) exit(1); printf(“Allocated”); fgets(s, 2, stdin); free(p); return 0; } Eu executei este […]

Como free e malloc funcionam em C?

Eu estou tentando descobrir o que aconteceria se eu tentar liberar um ponteiro “do meio” por exemplo, olhe para o seguinte código: char *ptr = (char*)malloc(10*sizeof(char)); for (char i=0 ; i<10 ; ++i) { ptr[i] = i+10; } ++ptr; ++ptr; ++ptr; ++ptr; free(ptr); Eu recebo uma falha com uma mensagem de erro de exceção sem […]

As implementações malloc retornarão a memory free-ed de volta ao sistema?

Eu tenho um aplicativo de vida longa com alocação de memory freqüente-deallocation. Alguma implementação de malloc retornará a memory liberada de volta ao sistema? O que é, a este respeito, o comportamento de: ptmalloc 1, 2 (padrão glibc) ou 3 dlmalloc tcmalloc (google segmentado malloc) Solaris 10-11 malloc padrão e mtmalloc Malloc padrão do FreeBSD […]

Por que o C ++ requer um casting para malloc (), mas C não?

Eu sempre fui curioso sobre isso – por que em C ++ eu tenho que converter o valor de retorno de malloc mas não em C? Aqui está o exemplo em C ++ que funciona: int *int_ptr = (int *)malloc(sizeof(int*)); E aqui está o exemplo em C ++ que não funciona (sem conversão): int *int_ptr […]