English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1428) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.12.02. 21:02)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

TCH  (statz) Főfasz
#1, Főfasz (10466)
1816 | #42a9 | ^ | Idézet | Mon, 10 Apr 2017 23:23:48 +02
94.21.*.* Linux x86 Opera Classic Hungary *.pool.digikabel.hu
Tehát akkor általános C gyökérség és nem winfos specifikus, értem. Csak azért, mert semmi értelme, simán lehet tudni a méretet előre is. Ha char*, akkor strlen(), ha meg struct, akkor meg sizeof().

Ami meg a pre-alloc-ot illeti, ezek szerint ez a GetAdaptersInfo(info, &size); úgy működik, hogy ha az info == NULL, akkor csak a méretet adja vissza, ha meg nem, akkor meg oda tölti. Hát ezt meg lehet csinálni úgy is, hogy lenne egy GetAdaptersSize() függvény, meg lenne a GetAdaptersInfo(). De kettébontani is felesleges: mégis mi gátolta meg a GetAdaptersInfo() íróját abban, hogy belül foglaljon memóriát? Akkorát amekkorát kell?
// mittudomen hogy mukodik, ez most ilyen pseudo-example
void GetAdaptersInfo(IP_ADAPTER_INFO **info, DWORD *size)
{
	*size = GetAdaptersCount() * sizeof(struct _IP_ADAPTER_INFO);
	*info = malloc(size);
	PutAdapters(*info);
}
Azaz tudjuk hány darab ilyen struct van, lefoglalunk pont akkora memóriát és oda írjuk őket. Vissza meg egy (struct **) jön, így lehet megoldani a pointerlistákat.
Ehhez képest ez kb. most így nézhet ki belül:
void GetAdaptersInfo(IP_ADAPTER_INFO *info, DWORD *size)
{
	if (info == NULL)
	{
		*size = GetAdaptersCount() * sizeof(struct _IP_ADAPTER_INFO);
	}
	else
	{
		PutAdapters(info);
	}
}
Gondolom belátható, hogy ennek semmi értelme. Akkor is, ha a mikrofos bűne, akkor is, ha bad C practice.

De, hogy adjak másik példát, itt a tied, átírva egylépcsősre:
char *nev = "Gipsz Jakab";
int kor = 43;

int kl = 1;
int kor2 = kor / 10;
while (kor2 > 0)
{
	++kl;
	kor2 /= 10;
}

int meret = kl + strlen(nev) + 15;

char szoveg[meret+1];

snprintf(szoveg, meret+1, "Név: %s Életkor: %d", nev, kor);


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1428) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.12.02. 21:02)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!