作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] 為什麼不能用MEMMOVE跟MEMCPY
時間Sat Dec 5 22:41:12 2009
上課講到的例子:
#include <string>
#include <iostream>
using namespace std;
int main()
{
string *arr = new string[3];
arr[0] = "a"; arr[1] = "b"; arr[2] = "c";
string *brr = new string[3];
memcpy(brr, arr, sizeof(string)*3);
delete []arr;
string s1 = "h";
string s2 = "k";
for (int i = 0; i < 3; ++i)
cout << brr[i] << endl;
}
※ 引述《flax00298 (NI)》之銘言:
: 如果並不是要複製
: 而是要移動一個的物件
: 那我想應該是不會有問題吧?
: 如果今天一個COPY CONSTRUCTOR
: 會讓STATIC MEMBER的COUNT之類的或什麼的八拉巴啦造成變動
: 那不是更奇怪嗎?
: 有什麼實際的例子嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.42.19
1F:推 flax00298:對不起我知道這個違反原則...但是如果這個時候 12/05 23:26
2F:→ flax00298:我用C STYLE去FREE他好像就沒問題了?是這樣嗎== 12/05 23:26
3F:→ ilway25:問題更 大....... 12/05 23:27
4F:→ flax00298:可是這樣忌諱呼叫他的DESTRUCTOR不是?感覺還好ˊˇˋ 12/05 23:30
5F:→ flax00298:就不會 12/05 23:31
6F:→ ric2k1:改用 for loop = 一下就好了呀! 12/06 00:32
7F:推 flax00298:是沒錯啦但我還是很好奇那些記憶體的釋放機制是怎樣 12/06 00:54