实现memcpy函数
#includeusing namespace std; void *Memcpy(void *dst, const void *src, size_t size) { char *psrc; char *pdst; if(NULL == dst || NULL == src) { return NULL; } if((src < dst) && (char *)src + size > (char *)dst) // 自后向前拷贝 { psrc = (char *)src + size - 1; pdst = (char *)dst + size - 1; while(size--) { *pdst-- = *psrc--; } } else { psrc = (char *)src; pdst = (char *)dst; while(size--) { *pdst++ = *psrc++; } } return dst; } int main(int argc, char *argv[]) { char buf[100] = "abcdefghijk"; //memcpy(buf+2, buf, 5); Memcpy(buf+2, buf, 5); printf("%sn", buf+2); }
循环引用
#includeusing namespace std; class B; class A { public: shared_ptr pointer_B; ~A() { std::cout << "A已经被删除" << std::endl; } }; class B { public: shared_ptr pointer_A;// 将shared_ptr修改为weak_ptr ~B() { std::cout << "B已经被删除" << std::endl; } }; int main() { { std::shared_ptr pointer_A(new A); std::shared_ptr pointer_B(new B); pointer_A->pointer_B = pointer_B; pointer_B->pointer_A = pointer_A; } return 0; }
#include#include #include #include using namespace std; int data = 1; mutex mt1,mt2; void a2() { mt2.lock(); sleep(1); data = data * data; mt1.lock(); //此时a1已经对mt1上锁,所以要等待 cout< mt1.lock(); sleep(1); data = data+1; mt2.lock(); //此时a2已经对mt2上锁,所以要等待 cout< thread t2(a2); thread t1(a1); t1.join(); t2.join(); cout<<"main here"<



