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語言指標
- C語言指標常見問題C語言指標
- C語言 C語言野指標C語言指標
- C語言(指標)C語言指標
- C語言指標C語言指標
- C語言指標(二) 指標變數 ----by xhxhC語言指標變數
- c語言指標彙總C語言指標
- C語言指標學習C語言指標
- c語言指標詳解C語言指標
- C語言基礎-指標C語言指標
- C語言 函式指標C語言函式指標
- C語言指標筆記C語言指標筆記
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- C語言指標和陣列筆試題C語言指標陣列筆試
- C語言:指標,C的靈魂C語言指標
- C語言知識彙總 | 51-C語言字串指標(指向字串的指標)C語言字串指標
- 程式設計師C語言經典筆試題程式設計師C語言筆試
- C語言函式傳遞指標引數的問題詳解C語言函式指標
- 搞清楚C語言指標C語言指標
- C語言 指標與陣列C語言指標陣列
- C語言指標基本知識C語言指標
- C語言指標詳解(一)C語言指標
- C語言指標詳解(二)C語言指標
- C語言指標用法大全C語言指標
- c語言實現this指標效果C語言指標
- C語言指標細節_1C語言指標
- 指標——C語言的靈魂指標C語言
- C語言基礎-1、指標C語言指標
- C語言知識彙總 | 56-C語言NULL空指標以及void指標C語言Null指標
- C++指標問題C++指標
- Go語言經典筆試題Go筆試
- 2019年c語言經典面試題目C語言面試題
- c語言-運算子,陣列,指標C語言陣列指標
- Swift中使用C語言的指標SwiftC語言指標
- C語言函式指標基礎C語言函式指標
- 走下“神壇”的C語言指標C語言指標
- C語言指標5分鐘教程C語言指標