2014-02-23 60 views
-1
int * myFun(const int & a) 
{ 
    int * c = new int(a); 
    int b = *c; 
    return &b; 
} 

1.如何解釋(const int & a)new int (a),它有什麼作用?如何解釋(const int&a)和新的int(a),它有什麼作用?

2.你能告訴我爲什麼有內存泄漏?

+0

這是哪一種語言? –

+0

我添加了C++標籤,但如果不是,請將其更改爲真正的語言標籤。 –

+3

如果您不知道引用是什麼,您可能需要向C++諮詢介紹性書籍。 – Borgleader

回答

1

的代碼來看,你使用的是C++

你得到一個新的指針c與你做b的的a然後值,用相同的值c,返回b,留下c的泄漏,因爲沒有什麼指向c了。

在然後結束:

  • a是常量
  • bc值,這是a
  • c值的指針到一個新的變量不再被引用在你的代碼
+0

好點。非常好的一點。編輯:) –

2

你可能想要從The Definitive C++ Book Guide and List挑選一本初學者書籍,閱讀並重新開始。

在您的問題:

  • const int & a是一個常量引用的int,命名爲a。基本上,這意味着某個地方指向另一個int變量,其行爲與int相同,但不能更改它的值

  • new int (a)表示您在堆的某處爲某個int變量動態分配內存,並初始化那個值爲a的變量。該表達式返回剛創建的變量的地址

  • 爲什麼會出現內存泄漏?您使用new int(a)語句分配內存,但從不釋放它。

    delete c;

你的函數結束之前:這應該與完成。因爲你返回一個局部變量的地址(你可能需要真正閱讀C++初學者書來理解它的含義),正如註釋中所指出的那樣,這個函數在return語句中有未定義的行爲。

相關問題