sal*_*ano 3 c++ memory-leaks memory-management
当我尝试执行以下操作时,我收到一条错误消息,说我正在尝试读取或写入受保护的内存.
void func1(int * ptr) {
int *ptr_b = new int[5];
ptr = ptr_b;
}
void main() {
int *ptr_a;
func1(ptr_a);
delete [] ptr_a;
}
Run Code Online (Sandbox Code Playgroud)
这合法吗?
将您的签名更改为:
void func1(int *& ptr)
Run Code Online (Sandbox Code Playgroud)
您按值传递指针,因此外部ptr不会更改.所以这就像在做
int main() { // <--- main returns int
int *ptr_a;
delete [] ptr_a;
}
Run Code Online (Sandbox Code Playgroud)
这是非法的,因为ptr_a没有初始化.
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |