全域指標

之前都下意識的以為全域指標直接宣告了就可以用了
其實不然,指標指向的記憶體區塊有可能被改掉!
以下是錯誤的範例!

##CONTINUE##

#include
#include
char *netstar_url;
int main(int argc, char *argv[])
{
char *test="url=www.gemtek.com.tw";
printf("test=%s\n",test);

netstar_url=strchr(test,'=')+1;
printf("netstar_url=%s\n",netstar_url);

getprintf();
system("PAUSE");
return 0;
}
int getprintf()
{
printf("netstar_url=%s\n",netstar_url);
return 0;
}



因此我們必須將靜態去配置一個不可更改的記憶體區塊!
利用 malloc 方式宣告出來,使用完在 free 掉以確保記憶體空間被釋放

netstar_url = malloc(strlen(get_url)+1);
strcpy(netstar_url,get_url);

留言

這個網誌中的熱門文章

Samsung 32吋 smart monitor M7 開箱| LS32AM700UCXZW

破解網站龜速下載圖片( Lazy loading),加速網頁圖片下載速度

Asus VG289Q unboxing and experience