SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Include Malloc .

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11381
    Moedas : 1031994
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Include Malloc . Empty [Tutorial] Include Malloc .

    Mensagem por Weslley_Script Sáb 29 Abr 2023 - 6:27

    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 [Tutorial] Include Malloc . Mrgreen

    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 [Tutorial] Include Malloc . Razz, 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 :
    Код:

    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 [Tutorial] Include Malloc . Razz .

    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 [Tutorial] Include Malloc . Razz


    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 :
    Код:

    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 :
    Код:

    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
    Код:

    Código:
    format(string, sizeof (string), "String: %s", mget(alMyData, 2));


    Enum's :

    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 !



    [Tutorial] Include Malloc . D07Xwqb
    [Tutorial] Include Malloc . Yjab9HN

      Data/hora atual: Seg 20 maio 2024 - 0:25