GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

Dinamik bellek yönetimi

Başlatan magnet00, 27 Şubat 2025, 13:48:08

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

magnet00

arkadaşlar iyi günler c dillerinde genelde dinamik bellek yönetimi vardır c# hariç peki pawnoda dinamik bellek yönetimi nasıl yapılır ?

1 - cache den çekilden veri delete ile nasıl silinir
2 - oyuncu oyundan çıktıkdan sonra o oyuncunun bilgilerini bellekten silmek istiyorum yani delete deyminin genel kullanımı hakkında yardımcı olur musunuz , nerelerde kullanılıyor bu kelime


Backup

PAWN'da dinamik bellek yönetimi, C veya C++'taki gibi malloc() ve free() fonksiyonları ile yapılmaz çünkü PAWN'un kendi bellek yönetim sistemi vardır. Ancak, delete kelimesi belirli durumlarda kullanılır.

MySQL eklentisinde, sorgu sonucunda dönen verileri temizlemek için cache_delete() kullanılır. Eğer cache_get_data() ile bir sonuç çektiyseniz, işlem bittikten sonra bellekten silmelisiniz.


PAWN Kodu: Seç
new rows, fields;
cache_get_data(rows, fields); // Cache'deki veriyi al

for (new i = 0; i < rows; i++)
{
    new value[128];
    cache_get_field_content(i, "username", value); // Örneğin kullanıcı adı çekme işlemi
    printf("Kullanıcı: %s", value);
}

// Kullanılmayan veriyi bellekten sil
cache_delete();


PAWN'da delete ifadesi genellikle dinamik array veya referans tipi değişkenleri bellekten silmek için kullanılır.

Örneğin, dinamik olarak oluşturulan bir oyuncu nesnesini temizlemek için:
PAWN Kodu: Seç
new PlayerInfo[MAX_PLAYERS];

public OnPlayerDisconnect(playerid, reason)
{
    delete PlayerInfo[playerid]; // Oyuncu çıktığında bellekteki bilgiyi sil
    return 1;
}

Ancak PAWN'da C gibi tam anlamıyla "dinamik bellek tahsisi" yoktur. Yani malloc() veya new ile bellek tahsis etmezsiniz. Burada delete, new ile oluşturulmuş referans tipli değişkenler için gereklidir.


Murat Budak

Arkadaşın dediğini tam olarak anlamadım ama ben söyle bir yol ile ilerliyorum.


PAWN Kodu: Seç
    new string[124], Cache:cache;
    mysql_format(fs_SQL, string, sizeof(string), "INSERT INTO `orneksql` (`ornek_sutun`) VALUES ('%i')", OrnekVeri);
    cache = mysql_query(fs_SQL, string);
    GuncelSQLID = cache_insert_id();
    cache_delete(cache);

Veriyide silmek için;
PAWN Kodu: Seç
public OnPlayerDisconnect(playerid, reason)
{
oData[playerid][oName][0] = EOS; //String  olan veriyi temizleme
oData[playerid][oAdmin] = 0; //integer olan veriyi temizleme
return 1;
}
Son düzenlenme: 27 Şubat 2025, 15:29:56 Murat Budak

magnet00

tamam teşekkür ettim hocam bir sorum olursa yine dönerim size @Backup