Bom Galera , Vou ensinar a Vocкs a Utilizar a include Malloc De ******.
Como alguns Ja sabem Essa funзгo existe em C /C++ Porem com essa include e possivel alocar memoria in pawn
Precisamos da Seguinte include Para iniciar O tutorial :
Como alguns Ja sabem Essa funзгo existe em C /C++ Porem com essa include e possivel alocar memoria in pawn
Precisamos da Seguinte include Para iniciar O tutorial :
Aqui Vocк pode encontrar ela.
Bom shittt(Palavrão bloqueado) Oque e malloc ?
Resposta :
malloc й um termo da computaзгo que designa uma funзгo da biblioteca padrгo das linguagens de programaзгo C e C++ para requisitar alocaзгo dinвmica de memуria. Й uma forma abreviada de escrever memory allocation (alocaзгo de memуria).
Fonte : Wikipedia
Perigo !
Antes Vou avisar umas coisinhas : No Malloc em si Pode ser prejudicial ao seu Script , O Sistema de alocaзгo do PAWN ja esta Otimo , Isso e pra quem Procura Mais memoria , Treine com seus Script antes de coloca-los em um FS Ou Gamemode , Pode Ocorrer tambem Problemas de fragmentaзгo De Memoria , Vazamento de Memуria , Buffer Overflow : Escrer na memуria para alem do limite da Arйa Alocada; Uso de areas liberadas tipo escrever numa regiгo onnde a memуria ja foi liberada por Free , Falhas no malloc : se nao houver memуria disponнvel o malloc irб falhar !.
Shittt explica Erros:
Vazamento de Memoria :
Esse Script Nгo irб destruir a memoria criada , Ela continuara ali , Mais vocк vai perde Aquela memуria , Isso significa que Vocк nгo pode mais Apagar Ou ser Utilizada , Basicamente aquela memoria alocada ( 10 ) e algo totalmente Inъtil, Isso se chama Vazamento de Memoria .
Код:Bom shittt(Palavrão bloqueado) Oque e malloc ?
Resposta :
malloc й um termo da computaзгo que designa uma funзгo da biblioteca padrгo das linguagens de programaзгo C e C++ para requisitar alocaзгo dinвmica de memуria. Й uma forma abreviada de escrever memory allocation (alocaзгo de memуria).
Fonte : Wikipedia
Perigo !
Antes Vou avisar umas coisinhas : No Malloc em si Pode ser prejudicial ao seu Script , O Sistema de alocaзгo do PAWN ja esta Otimo , Isso e pra quem Procura Mais memoria , Treine com seus Script antes de coloca-los em um FS Ou Gamemode , Pode Ocorrer tambem Problemas de fragmentaзгo De Memoria , Vazamento de Memуria , Buffer Overflow : Escrer na memуria para alem do limite da Arйa Alocada; Uso de areas liberadas tipo escrever numa regiгo onnde a memуria ja foi liberada por Free , Falhas no malloc : se nao houver memуria disponнvel o malloc irб falhar !.
Shittt explica Erros:
Vazamento de Memoria :
Esse Script Nгo irб destruir a memoria criada , Ela continuara ali , Mais vocк vai perde Aquela memуria , Isso significa que Vocк nгo pode mais Apagar Ou ser Utilizada , Basicamente aquela memoria alocada ( 10 ) e algo totalmente Inъtil, Isso se chama Vazamento de Memoria .
- Código:
stock MinhaMemoria() {
new Alloc:memory = malloc(10);
//defini disse que e pra alocar na variavel , 10 de memoria :p
}
Variavel Alocadora " Memory " й local naquela Funзгo , ISSO Significa que ela e destruida quando a funзгo termina , Mais a memoria alocada ( 10 ) Nгo e destruida , isso e um Vazamento Mais explicado HUE.
Fragmentaзгo :
Код:Fragmentaзгo :
- Código:
new
a = malloc(11),
b = malloc(11),
c = malloc(11),
d = malloc(11);
free(a);//liberei 11 de memoria da variavel a
free;//liberei 11 de memoria da variavel c
//total de memуria liberada e 24 .
new
e = malloc(24);
No (simplificado) exemplo acima sгo alocados 48 cйlulas, em seguida, 24 estгo liberados, a 24 sгo atribuнdos mais uma vez, no entanto, a alocaзгo final falharб porque embora saibamos hб 48 cйlulas disponнveis, eles nгo sгo contнguos (em conjunto) pode assim ser alocados em um ъnico bloco, isto e uma fragmentaзгo .
Valores Indefinidos :
No PAWN todas as variбveis, exceto quando indicado de outra forma, comeзar como 0, nгo й assim com malloc. Se vocк criar uma matriz usando malloc Pode nгo ser todos 0. Isso pode ser bom em algumas circunstвncias (й mais rбpido) e ruim em outros. Para os momentos em que й ruim hб uma funзгo calloc (clear malloc) que irб alocar a memуria e definir tudo para 0.
Falta de memуria :
isso significa que vocк estб tentando alocar mais memуria do que existe.
Out Of Bounds (OOB) :
й quando vocк tenta acessar algo que nгo й, na verdade, em uma matriz. existem dois modos de operaзгo : segura (lento) e inseguro (rбpido)
Rбpido(inseguro) :
Код:Valores Indefinidos :
No PAWN todas as variбveis, exceto quando indicado de outra forma, comeзar como 0, nгo й assim com malloc. Se vocк criar uma matriz usando malloc Pode nгo ser todos 0. Isso pode ser bom em algumas circunstвncias (й mais rбpido) e ruim em outros. Para os momentos em que й ruim hб uma funзгo calloc (clear malloc) que irб alocar a memуria e definir tudo para 0.
Falta de memуria :
isso significa que vocк estб tentando alocar mais memуria do que existe.
Out Of Bounds (OOB) :
й quando vocк tenta acessar algo que nгo й, na verdade, em uma matriz. existem dois modos de operaзгo : segura (lento) e inseguro (rбpido)
Rбpido(inseguro) :
- Código:
new Alloc:memoria = malloc(10);
mset(memoria, 0, 42);
//Funзгo mset Mais a frente irei explicar sobre ela !
Inseguro Nгo tem nenhuma verificaзгo, vocк pode facilmente danificar a memуria e Destruir tudo.
Код:- Código:
new
Alloc:memoria = malloc(10);
if (memoria)
{
mset(mem, 0, valor para alocar);
}
else
{
// ...
}
^^ Versao segura , com verificaзгo .
Comeзando
Como utiliza-la no Pawn ?
Resposta : Simples Depois que baixar-mos a include Vamos definir ela (retardado todos ja sabem, podera ter alguns que estгo comeзando agr ne fio XD).
Код:Comeзando
Como utiliza-la no Pawn ?
Resposta : Simples Depois que baixar-mos a include Vamos definir ela (retardado todos ja sabem, podera ter alguns que estгo comeзando agr ne fio XD).
- Código:
#include <malloc>
Agr poderei Explicar as Funзхes ...
Funзхes :
Код:Funзхes :
- Código:
malloc (tamanho para alocar) - Aloca uma regiгo de memуria com o tamanho especificado.
livre (slot) - Libera a memуria especificada.
mset (slot, нndice , valor) - Coloca o valor dado para a regiгo de memуria especificado no endereзo fornecido.
mget (slot, index) - Obtйm o valor no нndice fornecido do slot de memуria especificado.
msets (slot, нndice, String) - Como mset mas para strings, irб utilizar-se mais de um slot.
mgets (slot, нndice) - Como mget mas para strings, em modo inseguro vocк pode ser capaz de usar mget.
Malloc_SlotSize (slot) - Retorna o tamanho de um bloco alocado.
Para Experientes :
Definiзхes :
Se vocк colocar :
Код:Definiзхes :
Se vocк colocar :
- Código:
YSI_MALLOC_NO_SHORT
Vocк automaticamente N utiliza mais Aquelas funзхes anteriores , Vocк vai utilizar estas mais Completas :
Код:- Código:
Malloc_Set
Malloc_Get
Malloc_SetS
Malloc_GetS
Estes quatro sгo na ordem de precedкncia (se vocк definiu mais de um o mais elevado serб usado). Observe que a ordem sу й ditado pela ordem totalmente aleatуria eu fiz dentro Estes todos ir antes de sua definiзгo na include para determinar a quantidade de memуria a ser reservada para a matriz de alocaзгo. Se vocк nгo usar nenhum o padrгo й 1Mb.
Код:- Código:
MALLOC_MEMORY - Nъmero de cйlulas de reserva.
MALLOC_MEMORY_KB - Nъmero de killobytes a reserva.
MALLOC_MEMORY_MB - Nъmero de megabytes para a reserva.
MALLOC_MEMORY_B - Nъmero de bytes para a reserva.
Se Vocк Definir YSI_MALLOC_SECURE , a include vai Verificar os limites ! .
Strings:
Se estiver usando O Metodo inseguro(rбpido)
Para pegar Strings Faзa como o Exemplo
Код:Strings:
Se estiver usando O Metodo inseguro(rбpido)
Para pegar Strings Faзa como o Exemplo
- Código:
format(string, sizeof (string), "String: %s", mget(alMyData, 2));
Enum's :
Utilize Este Exemplo de Script :
Код:Utilize Este Exemplo de Script :
- Código:
e_exempl
{
e_exempl_primeiro,
e_exempl_segundo
}
new Alloc:Data;
main()
{
Data = malloc(e_exempl);
if (Data)
{
mset(Data, e_exempl_primeiro, 10);
}
}
Fim .
Creditos A : shittt
Eu Praticamente pouca coisa ...
Flw Erros poste ai que eu corrijo !
Creditos A : shittt
Eu Praticamente pouca coisa ...
Flw Erros poste ai que eu corrijo !