Include Malloc . -
shittt - 16.03.2014
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 :
Aqui Vocк pode encontrar ela.
Bom shittt(merda) 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 and ****** .
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 .
Код:
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 :
Код:
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) :
Код:
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.
Код:
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).
Agr poderei Explicar as Funзхes ...
Funзхes :
Код:
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 :
Vocк automaticamente N utiliza mais Aquelas funзхes anteriores , Vocк vai utilizar estas mais Completas :
Код:
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.
Код:
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
Код:
format(string, sizeof (string), "String: %s", mget(alMyData, 2));
Enum's :
Utilize Este Exemplo de Script :
Код:
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 : ******
Eu Praticamente pouca coisa ...
Flw Erros poste ai que eu corrijo !
Re: Include Malloc . -
PT - 16.03.2014
Bem para quem usa YSI ja la deve ter visto essa include.
Eu confesso que nunca gostei muito disso, malloc nunca achei muito interessante.
Contudo ela e otima para quem quer economizar memoria ao maximo.
Parabens pelo tuto.
Re: Include Malloc . -
DannielCooper - 16.03.2014
Eu acho super desnecessбrio essa include ser feita para o SA-MP. Mas enfim, para alguns vai ser bom.
Parabйns pelo seu tutorial.
Re: Include Malloc . -
shittt - 16.03.2014
Quote:
Originally Posted by PT
Bem para quem usa YSI ja la deve ter visto essa include.
Eu confesso que nunca gostei muito disso, malloc nunca achei muito interessante.
Contudo ela e otima para quem quer economizar memoria ao maximo.
Parabens pelo tuto.
|
Obrigado
Quote:
Originally Posted by DannielCooper
Eu acho super desnecessбrio essa include ser feita para o SA-MP. Mas enfim, para alguns vai ser bom.
Parabйns pelo seu tutorial.
|
Ela tambem ajuda a economizar memуria
, Obrigado tbm .
Re: Include Malloc . -
Axll - 16.03.2014
nem sabia disso '-' quando vi o nome pensei que era putaria "MALOCA" enfim bom topico
Re: Include Malloc . -
shittt - 16.03.2014
Quote:
Originally Posted by Axll
nem sabia disso '-' quando vi o nome pensei que era putaria "MALOCA" enfim bom topico
|
kkk , VLW Moзo ^^
Re: Include Malloc . -
WLSF - 16.03.2014
eu nгo gosto da ideia de usar isso em pawn, pawn й pra ser uma linguagem simples onde a ъnica coisa utilizada pra desenvolver os GM й a lуgica, e as funзхes do game.
Ai inventam isso ai, enquanto o povo aqui nem manja de else, no sense.
Re: Include Malloc . -
Dolby - 16.03.2014
Quote:
Originally Posted by Willian_Luigi
eu nгo gosto da ideia de usar isso em pawn, pawn й pra ser uma linguagem simples onde a ъnica coisa utilizada pra desenvolver os GM й a lуgica, e as funзхes do game.
Ai inventam isso ai, enquanto o povo aqui nem manja de else, no sense.
|
Й somente mais uma include na lista de coisas inъteis do
******, assim como Pawn
Orientado a
Objetos.
Mas o tutorial ficou bem confuso, seria melhor dar uma reorganizada.
Re: Include Malloc . -
GWMPT - 16.03.2014
Quote:
Originally Posted by Dolby
Й somente mais uma include na lista de coisas inъteis do ******, assim como Pawn Orientado a Objetos.
|
Desde quando "Pawn orientado a objectos" й inъtil?
A programaзгo orientada a Objectos existe para alguma coisa.
Jб que pawn nгo suporta nativamente POO, ****** fez com que fica-se QUASE "nativo".
Re: Include Malloc . -
Dolby - 16.03.2014
Quote:
Originally Posted by Kikito
Desde quando "Pawn orientado a objectos" й inъtil?
A programaзгo orientada a Objectos existe para alguma coisa.
Jб que pawn nгo suporta nativamente POO, ****** fez com que fica-se QUASE "nativo".
|
Desde quando a linguagem escolhida pro SA-MP foi Pawn por ser "simples, de fбcil acesso e aprendizado".
Claro que ela existe para alguma coisa, em outras
linguagens de programaзгo ela й super ъtil, mas isto nгo se aplica ao Pawn.