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
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.
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:
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.
Arkadaşın dediğini tam olarak anlamadım ama ben söyle bir yol ile ilerliyorum.
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;
public OnPlayerDisconnect(playerid, reason)
{
oData[playerid][oName][0] = EOS; //String olan veriyi temizleme
oData[playerid][oAdmin] = 0; //integer olan veriyi temizleme
return 1;
}
tamam teşekkür ettim hocam bir sorum olursa yine dönerim size
@Backup