locate函式測試

2021-09-23 17:25:11 字數 1876 閱讀 5027

源**:

#include #include #include static void show_pointer(void *p, char *descr) 

char big_array[1l<<24]; /* 16 mb */

//char huge_array[1l<<31]; /* 2 gb */

char huge_array[1l<<30];/* 1 gb */

int global = 0;

int useless()

int main ()

/*big array 0x4804a060 1208262752

huge array 0x804a060 134520928

local 0xbfcc9fdc 3217858524

global 0x804a044 134520900

p1 0xa7545008 2807320584

p2 0x49a67008 1235644424

p3 0x49a67110 1235644688

p4 0x49a77118 1235710232

useless 0x80484b6 134513846

exit 0x8048370 134513520

malloc 0x8048350 134513488

*/

測試結果

學習心得

這個程式就是開闢一些空間,然後以16進製制和10進製列印出首位址。

引用

1.malloc函式

函式原型為void malloc(unsigned int size);在記憶體的動態儲存區中分配一塊長度為"size" 位元組的連續區域。函式的返回值為該區域的首位址。 「型別說明符」表示把該區域用於何種資料型別。(型別說明符)表示把返回值強制轉換為該型別指標。「size」是乙個無符號數。例如: pc=(char *) malloc (100); 表示分配100個位元組的記憶體空間,並強制轉換為字元陣列型別,函式的返回值為指向該字元陣列的指標, 把該指標賦予指標變數pc。若size超出可用空間,則返回空指標值null。

2.calloc 函式

函式原型為void *calloc(unsigned int num, unsigned int size)

按所給資料個數和每個資料所佔位元組數開闢儲存空間。其中num為資料個數,size為每個資料所佔位元組數,故開闢的總位元組數為 numsize。函式返回該儲存區的起始位址。calloc函式與malloc 函式的區別僅在於一次可以分配n塊區域。例如: ps=(struct stu) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的結構長度。因此該語句的意思是:按stu的長度分配2塊連續區域,強制轉換為stu型別,並把其首位址賦予指標變數ps。

3. realloc函式:
函式原型為void *realloc(void *ptr, unsigned int size)

重新定義所開闢記憶體空間的大小。其中ptr所指的記憶體空間是用前述函式已開闢的,size

為新的空間大小,其值可比原來大或小。函式返回新儲存區的起始位址(該位址可能與

以前的位址不同)。例如p1=(float *)realloc(p1,16);將原先開闢的8個位元組調整為16

個位元組。

**動態申請的記憶體空間要進行手動用free()函式釋

Mysql 常用函式(16) locate 函式

mysql常用函式的彙總,可看下面文章 返回第一次出現子串的位置,有兩種語法格式 locate substr,str 語法格式說明 返回 substr 在 str 中第一次出現的位置 小栗子select locate bar foobarbar 4 select locate xbar foobar...

Mysql 常用函式(16) locate 函式

mysql常用函式的彙總,可看下面文章 返回第一次出現子串的位置,有兩種語法格式 locate substr,str 語法格式說明 返回 substr 在 str 中第一次出現的位置 小栗子select locate bar foobarbar 4 select locate xbar foobar...

mysql擷取函式LOCATE和POSITION

在mysql 裡是沒有像sqlserver的charindex函式的,用locate和position函式可以實現功能!locate substr,str position substr in str 返回子串 substr 在字串 str 中第一次出現的位置。如果子串 substr 在 str 中...