1. function
真正的記憶體在function 內被allocate, caller 只要有一個指標,傳入指標的位址(即指標的指標)即可使用。
只是使用完畢得由caller release 記憶體。
#define MEM_SIZE 100
//function code:
Func(BYTE **pMem)
{
*pMem= malloc(100);
}
//caller code:
Main()
{
BYTE *pBuf=NULL;
Func(&pBuf);
//
//do something with "pBuf"
//
.
.
.
//
//Release mem
//
Free(pBuf);
}
2. 指標的陣列:
等同是create 一個指標的陣列
Method1: by Array
Method2: by pointer
#define METHOD_ARRAY
Main()
{
int **pArray=NULL;
int pIntArray[3];
int i;
pArray = (int **)malloc(3*sizeof(int*));
//assign address
for (i=0; i<3; i++)
{
#ifdef METHOD_ARRAY
//
// by Array
//
pArray[i] = &(pIntArray[i]);
#else
//
// by pointer
//
*(pArray+i)= &(pIntArray[i]);
#endif
}
//show
for (i=0; i<3; i++)
{
#ifdef METHOD_ARRAY
//
// by Array
//
printf("%d\n", *(ppValue[i]));
#else
//
// by pointer
//
printf("%d\n", *((int *)*(ppValue+i)));
#endif
}
free(pArray);
}
沒有留言:
張貼留言