[Tutorial] Include Malloc .
#1

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).

Код:
#include <malloc>
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 :
Код:
YSI_MALLOC_NO_SHORT
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 !
Reply
#2

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.
Reply
#3

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.
Reply
#4

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 .
Reply
#5

nem sabia disso '-' quando vi o nome pensei que era putaria "MALOCA" enfim bom topico
Reply
#6

Quote:
Originally Posted by Axll
Посмотреть сообщение
nem sabia disso '-' quando vi o nome pensei que era putaria "MALOCA" enfim bom topico
kkk , VLW Moзo ^^
Reply
#7

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.
Reply
#8

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.
Reply
#9

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".
Reply
#10

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)