c 語言指標操作經典問題
我們先來看看這段程式碼吧!
void pointer_test()
{
unsigned int set_port = 65536;
unsigned char *buf = (unsigned char *)malloc(1024);
if(buf == NULL)
{
return -1;
}
memcpy(buf,"tant",4);
buf[4] = 2;
buf[5] = 0xA2;
buf[6] = 3;
buf[7] = 0;
*((unsigned int*)(buf+8)) = set_port;
buf[12] = 100;
//指標偏移
buf = buf + 13;
buf[0] = 0;
buf[2] = 2;
buf[3] = 0x23;
memcpy(g_buf ,buf,1024);
free(buf);//此時記憶體是否得到了釋放,buf的地址已經發生了位移。
buf = NULL;
}
free記憶體會得到段錯誤,因為指標已經偏移了,而 free(buf)會釋放出錯。
所以我們操作指標之時,我們需要將指標拷貝一份,對拷貝指標進行操作,儲存原指標。
void pointer_test()
{
unsigned int set_port = 65536;
unsigned char *buf = (unsigned char *)malloc(1024);
if(buf == NULL)
{
return -1;
}
//malloc 成功之後,指標拷貝
char* temp_buf = buf;
//以後的操作由temp_buf來實現,這樣buf就不會發生位移了。
memcpy(temp_buf,"tan
相關文章
- C語言指標常見問題C語言指標
- C語言指標C語言指標
- 2019年c語言經典面試題目C語言面試題
- c語言指標彙總C語言指標
- C語言指標用法大全C語言指標
- C語言 函式指標C語言函式指標
- C語言指標筆記C語言指標筆記
- C語言基礎-指標C語言指標
- C語言指標學習C語言指標
- C語言指標(二) 指標變數 ----by xhxhC語言指標變數
- C語言指標和陣列筆試題C語言指標陣列筆試
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- C語言函式傳遞指標引數的問題詳解C語言函式指標
- C語言知識彙總 | 51-C語言字串指標(指向字串的指標)C語言字串指標
- C語言知識彙總 | 56-C語言NULL空指標以及void指標C語言Null指標
- C語言指標詳解(一)C語言指標
- C語言指標詳解(二)C語言指標
- C語言 指標與陣列C語言指標陣列
- C語言基礎-1、指標C語言指標
- c語言實現this指標效果C語言指標
- 搞清楚C語言指標C語言指標
- C語言指標基本知識C語言指標
- 每日一題:C語言經典例題之雞兔同籠每日一題C語言
- 【C】 42_記憶體操作經典問題分析 二記憶體
- 【C】 41_記憶體操作經典問題分析 一記憶體
- c語言-運算子,陣列,指標C語言陣列指標
- 面試挖坑題:之C語言底層操作問題面試C語言
- C語言入門經典(第5版)C語言
- c語言函式指標的定義C語言函式指標
- C語言指標應用程式設計C語言指標程式設計
- C語言學習之:指標與字串C語言指標字串
- C語言第7題:指標總結(兩張表格重點***)C語言指標
- 主元素問題(C語言)C語言
- C語言第九周作業(指標變數,記憶體訪問,取址,空指標)C語言指標變數記憶體
- C語言必須要記住的經典程式C語言
- C\C++語言重點——指標篇 | 為什麼指標被譽為 C 語言靈魂?(一文讓你完全搞懂指標)C++指標
- 20201215-經典基礎C語言題01-三個數排大小C語言
- GO語言————4.9、指標Go指標