相关疑难解决方法(0)

删除[]是否等于删除?

IP_ADAPTER_INFO *ptr=new IP_ADAPTER_INFO[100];
Run Code Online (Sandbox Code Playgroud)

如果我免费使用

delete ptr;
Run Code Online (Sandbox Code Playgroud)

它会导致内存泄漏,如果不是那么为什么?

这是VS2005生成的反汇编代码

; delete ptr;
0041351D  mov         eax,dword ptr [ptr] 
00413520  mov         dword ptr [ebp-0ECh],eax 
00413526  mov         ecx,dword ptr [ebp-0ECh] 
0041352C  push        ecx  
0041352D  call        operator delete (4111DBh) 
00413532  add         esp,4 

; delete []ptr;
00413535  mov         eax,dword ptr [ptr] 
00413538  mov         dword ptr [ebp-0E0h],eax 
0041353E  mov         ecx,dword ptr [ebp-0E0h] 
00413544  push        ecx  
00413545  call        operator delete[] (4111E5h) 
0041354A  add         esp,4 
Run Code Online (Sandbox Code Playgroud)

c++ memory-management pod

44
推荐指数
5
解决办法
1万
查看次数

学习C++作为Perl程序员

我是一名Perl5程序员已有7年了,现在我正在努力学习C++.一些C++语法很难让我理解并以C++方式思考.

例如:在Perl中,您可以混合数组中的数据

@array = (1,"string",5.355);
Run Code Online (Sandbox Code Playgroud)

您可以将任何值分配给标量变量:

$var = 1;
$var = "string";
$var = \$reference_to_scalar;
Run Code Online (Sandbox Code Playgroud)

有很多例子.

我的一个朋友向我推荐了Bruce Eckel的"Thinking of C++"一书,但我没有任何C背景,而且我很难理解一些事情.

所以我的问题是 - 你能不能就这种情况向我推荐一本书.我不想学习C.我理解OOP(我越来越熟悉C++ oop),我理解指针(和一些算术)和引用(在Perl中广泛使用)的要点.

我不需要傻瓜手册(是什么int,bool,double,if,while),我只是需要一个方向如何学习C++从Perl程序员的角度来看,因为我敢肯定,有很多像我一样.

先感谢您.

编辑:感谢所有推荐的书籍和答案,我将尝试使用"Accelerated C++".我将从头开始尝试将我的思维流程改为C++.我添加了"初学者"标签.

c++ perl

16
推荐指数
4
解决办法
1601
查看次数

标签 统计

c++ ×2

memory-management ×1

perl ×1

pod ×1