1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
/*
============================================================================
Name : source.c
Date : 13/02/2017
Author : SAMBIA39
Version : 0.1
Copyright : Copyright © 2017 SAMBIA39 All rights reserved.
Description : Ansi-style
============================================================================
*/
#define MAXSIZE_UINT 10 /* Taille max d'une variable unsigned int */
#define MAXSIZE_CHAR 50 /* Taille max d'une variable unsigned char */
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <unistd.h>
/*
* La fonction utilise sbrk qui permet d'incrémenté
* lespace de données du programme.
* Nul permet dobtenir lemplacement de la limite actuelle.
* le contraire a pour effet dallouer de la mémoire au processus.
* la reduire à pour effet de désallouer de la mémoire.
*
* /!\ Attetion sur certain système la fonction est "deprecated"
*/
void *f_get_sbrk_mem_init( intptr_t size ){
void *p = NULL;
extern void *sbrk(intptr_t);
if( ((void*)-1) == ( p = sbrk(size) ) )
return ( (void*)-1 );
memset( p, 0x00, size );
return ( p );
}
/*
* Fonction d'informations
*/
void f_print_addr( const char*p_str, void *pData ){
fprintf( stdout, "(%s)\t:%p\n",p_str, pData );
}
int main( void ){
unsigned int i = 0;
unsigned int *ptr_uint = NULL;
/*
* Attention il faut être attentif a la taille
* des élemnts que l'on souhaites. Cas contraire
* sela résultera par des erreurs.
*/
ptr_uint = f_get_sbrk_mem_init(
MAXSIZE_UINT*sizeof(unsigned int) );
if( ((void*)-1) == (void*)ptr_uint )
return EXIT_FAILURE;
f_print_addr( "Var ptr_uint", (void*)ptr_uint );
/*
* Initialisation & affichage
*/
for( i = 0; i < MAXSIZE_UINT; i++ ){
*(ptr_uint+i) = i;
fprintf( stdout, "(%d)\t:%d\n", i,
*(ptr_uint+i) );
}
return (EXIT_SUCCESS);
} |
Partager