O tema Stdlib.h tem gerado grande interesse ao longo dos anos, tanto entre especialistas quanto entre o público em geral. A relevância de Stdlib.h no contexto atual não pode ser esquecida, pois impacta diversos aspectos da vida cotidiana, desde a saúde até a política. Este artigo pretende oferecer uma visão completa e atualizada de Stdlib.h, abordando suas implicações, sua evolução ao longo do tempo e as perspectivas futuras que se vislumbram em torno deste tema. Através de uma análise detalhada e rigorosa, procuramos proporcionar ao leitor um panorama claro e enriquecedor que lhe permita compreender plenamente a importância de Stdlib.h nos dias de hoje.
| Biblioteca padrão do C |
Stdlib.h é um arquivo cabeçalho da biblioteca de propósito geral padrão da linguagem de programação C. Ela possui funções envolvendo alocação de memória, controle de processos, conversões e outras. Ela é compatível com C++ e é chamada cstdlib em C++. O nome "stdlib" vem de standard library (standard library é biblioteca padrão em inglês).
Membros de stdlib.h pode ser classificado em: conversão, memória, controle de processo, ordenamento e busca, matemática.
| Name | Description |
|---|---|
| Conversão de tipo | |
atof |
string para float |
atoi |
string para integer |
atol |
string para long integer |
strtod |
string para double |
strtol |
string para long int |
strtoul |
string para unsigned long int |
| Geração de seqüência pseudo-aleatória | |
rand |
gera um número inteiro pseudo aleatório |
srand |
seleciona a semente do gerador pseudo aleatório |
| Alocação e liberação de memória | |
malloccallocrealloc |
aloca memória do "heap" |
free |
libera memória de volta para o "heap" |
| Controle de processos | |
abort |
força o término da execução |
atexit |
registra uma função "callback" para saída do programa |
exit |
termina a execução do programa |
getenv |
obtém uma variável de ambiente |
system |
executa um comando externo |
| Ordenamento e busca | |
bsearch |
busca binária em "array" |
qsort |
ordena "array" segundo algoritmo Quick Sort |
| Matemática | |
abslabs |
valor absoluto |
divldiv |
divisão inteira |
Os arquivos stdlib.h e stddef.h definem a macro NULL, que é um ponteiro nulo constante, e representa um valor de ponteiro que garante não apontar para um endereço válido na memória. NULL pode ser definido como uma constante igual a int zero, long int zero, ou zero "cast" para void * pointer:
#define NULL 0
#define NULL 0L
#define NULL ((void *) 0)
Nota: Apesar do ponteiro nulo constante ser definido sempre como a representação simbólica 0 ou 0 "cast" para ponteiro void, a representação binária real desse ponteiro é dependente de sistema e pode não ter todos os bits zero.
Um tipo de dados chamado size_t é definido em stdlib.h, que representa o tamanho de um "array" na função membro. Na prática, size_t é sempre assumido ter os mesmos requisitos para armazenamento que um unsigned integer. Devido ao fato de que o valor real de size_t é dependente de arquitetura, alguns erros de programação podem ocorrer, , especialmente em arquiteturas de 64 bits.
Dois tipo de dados menos utilizados são div_t e ldiv_t. Eles retornam os tipos de retorno das funções div e ldiv. O padrão as define como:
typedef struct {
int quot, rem;
} div_t;
typedef struct {
long int quot, rem;
} ldiv_t;
itoa é uma função comum que é incluída várias vezes na biblioteca stdlib.h, mas o padrão não a define. Ela pode ter sido inclusa pelo fato de ter aparecido no livro The C Programming Language.