realloc 使用中的需要注意的問題

2021-07-09 11:27:19 字數 582 閱讀 9717

函式原型:extern void *realloc(void *mem_address, unsigned int newsize);   

函式功能:擴大由指標mem_address所指的記憶體空間到newsize尺寸。如果mem_address所指空間記憶體段有需要的大小,則直接擴充套件該記憶體空間;否則,

先按照newsize指定的大小分配空間,將原有資料從頭到尾拷貝到新分配的記憶體區域,而後釋放原來mem_address所指記憶體區域,

同時返回新分配的記憶體區域的首位址。即重新分配儲存器塊的位址。   

返回值:如果重新分配成功則返回指向被分配記憶體的指標,否則返回空指標null。

注意:1.mem_address和newsize分別為0時,功能與malloc和free空能相同;

2.當newsize小於之前的oldsize時,有資料丟失

這裡需要重點注意的是,該函式在當前記憶體段不能滿足newsize時,會重新分配記憶體空間,並且移動資料。這就有乙個問題,假設之前的指標所指資料中有指向原位址空間的指標時,該指標所指的空間的資料不再與之前相同。如,mem_address中存放的是乙個鍊錶,鍊錶的next指向下乙個記憶體塊,則使用該函式會出錯。

使用SqlSession 需要注意的

sqlsessionfactorybuilder 是用於建立sqlseesionfactory的,將sqlsessionfactorybuilder當成乙個工具類來使用 sqlseesionfactory 會話工廠,是乙個單例的,用於建立sqlsession,sqlsessionfactory一旦建...

使用Calendar需要注意clear

date是前台傳的值,格式為2014 01 01的形式 如下的 是去date日期當月的最大天數日期 int month integer.parseint date.substring 5,7 取天數 int year integer.parseint date.substring 0,4 取年份 d...

使用std sort需要注意的問題

在網上搜到一篇解決這個錯誤的有用的資料,特記錄。1.例子 先舉個例子 分析一下程式的執行結果 看看在三種情況下程式的輸出分別是什麼,有可能出現異常 pragma once include include 下面是三個自定義的謂詞函式,排序演算法將分別使用這三個函式 bool compare int a...