#include<stdio.h>
char* str2;
char* clear()
{
str2="";
}
void main()
{
char *str1="hello!";
clear();
strcpy(str2,str1);
clear();
}
--
※ Origin: 楓橋驛站(bbs.cs.nthu.edu.tw) ◆ From: h42.s22.ts30.hinet.net
: 小弟並不知道如何用一個函式把global的字串清乾淨
: 有人可以教我一下嗎? THANKS.....
: #include<stdio.h>
: char* str2;
: char* clear()
: {
: str2="";
: }
: void main()
: {
: char *str1="hello!";
: clear();
: strcpy(str2,str1);
: clear();
: }
!@@#%%!! 當然不清除啊!...執行完後,系統回收記憶體而己,不會清除memory
的內容!...沒有辦法在執行完後作動作,且沒有必要.
--
[m● Origin : 雲林科技大學藍天使 <bbs.yuntech.edu.tw> [FROM: 140.125.246.136]
問題出在於str2並未配置緩衝區,所以ctrcpy後會有"意想不到的結果",str2內容
為"hello"也是"恰好"的結果.
應該先加入 str2=new char(...));再做strcpy動作
( 或者用str2=str1就不必配置記憶體... )
要注意的一點是,str2="";會產生一個空字串並將位址指定給str2,而不是清除
str2的內容,故原來str2的內容"hello"會造成memory leak!!!
--
Ξ Origin: 中正大學寂寞芳心小站 <bbs.ccu.edu.tw> [FROM: 140.123.121.71]
str2[0]='\0';就可將str2內容清除了