Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Kiszámítja a halom memóriablokkjának méretét (csak hibakeresési verzió).
Szemantika
size_t _msize_dbg(
void *userData,
int blockType
);
Paraméterek
userData
Mutasson arra a memóriablokkra, amelynek a méretét meg szeretné határozni.
blockType
A megadott memóriablokk típusa: _CLIENT_BLOCK vagy _NORMAL_BLOCK.
Visszaadott érték
A sikeres befejezéskor _msize_dbg visszaadja a megadott memóriablokk méretét (bájtban), ellenkező esetben ad vissza NULL.
Megjegyzések
_msize_dbg A függvény hibakeresési _msize verziója. Ha _DEBUG nincs definiálva, minden hívás _msize_dbg a hívásra _msizelesz csökkentve. Mindkettő _msize , és _msize_dbg kiszámítja a memóriablokk méretét az alap halomban, de _msize_dbg két hibakeresési funkciót ad hozzá: Tartalmazza a memóriablokk felhasználói részének mindkét oldalán található puffereket a visszaadott méretben, és lehetővé teszi bizonyos blokktípusok méretszámítását.
A memóriablokkok az alap halom hibakeresési verziójában való lefoglalásával, inicializálásával és kezelésével kapcsolatos információkért tekintse meg a CRT hibakeresési halom részleteit. A foglalási blokktípusokról és azok használatáról további információt a hibakeresési halom blokktípusai című témakörben talál. A standard halomfüggvények és a hibakeresési verziók közötti különbségekről további információt a halomfoglalási függvények hibakeresési verzióiban talál.
Ez a függvény ellenőrzi a paraméterét. Ha memblock null mutató, _msize_dbg érvénytelen paraméterkezelőt hív meg a paraméterérvényesítésben leírtak szerint. A hiba kezelése esetén a függvény -1 állít be errnoEINVAL és ad vissza (18 446 744 073 709 551 615 nem aláírt).
Requirements
| Rutin | Kötelező fejléc |
|---|---|
_msize_dbg |
<crtdbg.h> |
További kompatibilitási információkért lásd: Kompatibilitás.
Libraries
Csak a C futásidejű kódtárak verzióinak hibakeresése .
Example
// crt_msize_dbg.c
// compile with: /MTd
/*
* This program allocates a block of memory using _malloc_dbg
* and then calls _msize_dbg to display the size of that block.
* Next, it uses _realloc_dbg to expand the amount of
* memory used by the buffer and then calls _msize_dbg again to
* display the new amount of memory allocated to the buffer.
*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <crtdbg.h>
int main( void )
{
long *buffer, *newbuffer;
size_t size;
/*
* Call _malloc_dbg to include the filename and line number
* of our allocation request in the header
*/
buffer = (long *)_malloc_dbg( 40 * sizeof(long), _NORMAL_BLOCK, __FILE__, __LINE__ );
if( buffer == NULL )
exit( 1 );
/*
* Get the size of the buffer by calling _msize_dbg
*/
size = _msize_dbg( buffer, _NORMAL_BLOCK );
printf( "Size of block after _malloc_dbg of 40 longs: %u\n", size );
/*
* Reallocate the buffer using _realloc_dbg and show the new size
*/
newbuffer = _realloc_dbg( buffer, size + (40 * sizeof(long)), _NORMAL_BLOCK, __FILE__, __LINE__ );
if( newbuffer == NULL )
exit( 1 );
buffer = newbuffer;
size = _msize_dbg( buffer, _NORMAL_BLOCK );
printf( "Size of block after _realloc_dbg of 40 more longs: %u\n", size );
free( buffer );
exit( 0 );
}
Kimenet
Size of block after _malloc_dbg of 40 longs: 160
Size of block after _realloc_dbg of 40 more longs: 320