![]() |
1
7
设置指向内存地址的指针
|
![]() |
2
3
您将n设置为虚拟内存地址5,因为此内存对您的应用程序无效,您将遇到崩溃。 您需要做的是首先获得一些有效的内存,您有两个选项-使用堆栈或使用堆。 如果您执行下面的操作,您将“指向”一个堆栈变量,然后可以在其中指定值5
堆栈和堆之间的区别在于内存来自何处-堆栈变量仅在函数调用的生命周期内存在。当函数返回时,栈变量将被“弹出”,这些内存片段将不再有效。--因此,从上面的示例中,您只能在“stackvar”存在的情况下使用“n”,在本例中,直到您从函数返回时为止。 如果你准备好了
您将创建一个大小为sizeof(int)字节的“heap”变量。此变量将持续到调用“free”为止。
请记住,这样做有点重,因为调用“new”时会创建额外的簿记内存。不会太多,但它会在那里。通常,您将从堆中分配更大的类/结构。使用堆的一个额外负担是您必须记住删除,否则您将“泄漏”。我敢肯定你以前见过这些:你运行应用程序的时间越长,它使用的内存就越多。 这有道理吗?:) |
![]() |
3
2
因为您将指针的值设置为“5”(如内存地址5)。 你可能是说:
|
![]() |
4
0
您需要将指针设置为值的地址…
|
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 7 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 7 月前 |
![]() |
tTt · 使用堆栈中的值重新分配指针 8 月前 |
![]() |
manuel · 现代C中空指针的替代方案++ 8 月前 |