若將第10行代碼替換為 p = &b;程序依然可以訪問p所指內容,所以此段代碼無法證明大括號內的內存是否銷毀或保留
#include <stdio.h>
#include <iostream>
int main()
{
int* p = nullptr;
{??
int b = 20;
p = &b;
}
*p = 4;
printf(" *p is %d\n", *p);
system("pause");
? ? return 0;
}
#include <stdio.h>
#include <iostream>
int main()
{
int* p = nullptr;
{??
int b = 20;
p = &b;
}
*p = 4;
printf(" *p is %d\n", *p);
system("pause");
? ? return 0;
}
2023-08-03
舉報
2023-12-14
c++中清變量不清指針,b被回收,p不變,成為野指針,若此時內存被其他程序占用,則后果不堪設想。
2023-09-10
p指向的是一塊實際內存地址,就算b被回收了,p還是指向的那塊地址,變的是那塊地址存儲的內容,所謂回收是存儲在實際內存中的數(shù)據(jù)的數(shù)清理。
printf(" *p is %d\n", *p);
*p = 4;
可以這樣,改一下位置