私はこれを正しく行っていると信じていますが、確認したかったのです。プログラムでは、関数によって返される割り当てられたメモリを指す 2 つのポインターを使用しています。そのメモリを使い終わったらfree()
、それを使いますが、同じポインターを使用して、新しく割り当てられたメモリ空間を指します。これが私の意味の例を示す私のプログラムです(私の思考プロセスを示すためにコメントされています):
int main(void)
{
char *data, *url;
int i = 1;
while(i)
{
printf("Enter URL: ");
if(!(url = getstr())) return 1; //url now points to allocated memory from getstr();
if(strlen(url) <= 0) i = 0;
if(data = readsocket(url, 80, "http")) printf("\n%s\n\n", data); //data now points to allocated memory from readsocket();
else printf("\n\n");
free(url); //free allocated memory that url points to url
free(data); //free allocated memory that data points to data
}
return 0;
}
これは正しいですか、それともこれを行うためのより一般的に好ましい方法はありますか? それとも、私はそれを完全に間違っていますか?