Articles of malloc

C – alocação de uma matriz em uma function

Eu estou tentando alocar uma matriz usando uma function que leva suas dimensões e um ponteiro triplo. Eu aloquei um int ** (configurado para NULL) e estou passando seu endereço como o argumento da function. Isso me dá uma violação de access mem por algum motivo. void allocateMatrix(int ***matrix, int row, int col) { int […]

Função para alocar dinamicamente a matriz

Eu quero criar uma function para alocar (com malloc / calloc ) uma matriz declarada como um ponteiro duplo. Eu entendi como funciona uma matriz de ponteiro duplo e como alocá-lo com malloc , mas quando eu passar minha matriz (declarado em main() e inicializado para NULL ) meu programa trava. Eu suponho que o […]

car livre *: tamanho inválido seguinte (rápido)

Estou liberando um char * após um processo de concatenação. Mas recebo este erro: free (): próximo tamanho inválido (rápido): 0x0000000001b86170 Abaixo está o meu código: void concat(stringList *list) { char *res = (char*)malloc(sizeof(char*)); strcpy(res, list->head->string); list->tmp = list->head->next; while (list->tmp != NULL) { strcat(res, “,”); strcat(res, list->tmp->string); list->tmp = list->tmp->next; } printf(“%s\n”, res); free(res); […]

perguntas novato sobre malloc e sizeof

Alguém pode me explicar por que minha chamada para malloc com um tamanho de string de 6 retorna um tamanho de 4 bytes? Na verdade, qualquer argumento inteiro que eu dou malloc eu recebo um sizeof de 4. Em seguida, eu estou tentando copiar duas seqüências de caracteres. Por que minha saída da string copiada […]

O que o malloc (0) retorna?

O que malloc(0) retorna? A resposta seria a mesma para realloc(malloc(0),0) ? #include #include int main() { printf(“%p\n”, malloc(0)); printf(“%p\n”, realloc(malloc(0), 0)); return 0; } Saída do linux gcc: manav@manav-workstation:~$ gcc -Wall mal.c manav@manav-workstation:~$ ./a.out 0x9363008 (nil) manav@manav-workstation:~$ A saída continua mudando toda vez para malloc(0) . Esta é uma resposta padrão? E por que […]

memory máxima que malloc pode alocar

Eu estava tentando descobrir o quanto de memory eu posso malloc ao máximo na minha máquina (1 Gb RAM 160 Gb HD plataforma Windows). Eu li que o máximo de memory malloc pode alocar é limitado a memory física (na pilha). Além disso, quando um programa excede o consumo de memory para um determinado nível, […]

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 = […]