![]() |
1
7
你 不能 做你想做的事。你 甚至不应该尝试 做你想做的事。
即使你知道
无论何时分配内存,都需要跟踪指针。如果你的程序甚至不知道内存,就没有办法释放它。 跟踪内存分配。如果您正在设计动态分配的数据结构,那么您的设计应该包括跟踪它们的功能,例如在链接列表中保留地址列表或其他内容。 如果这看起来工作量很大,可以考虑使用C#、Java或Python等托管语言。 |
|
2
2
没有办法。 |
![]() |
3
2
这是因为这是不可能的。你从那里回来的街区
注:
实施
|
![]() |
4
1
无法创建[-5]。。。但从实际的角度来看,你必须记住分配给你的内存
当指针在未释放的情况下失去与内存的关联(或超出范围)时发生的情况称为内存泄漏,如果没有C语言中不易使用的详尽技术(例如Java的标记/清除垃圾收集,或对整个内存进行mallocated并对其进行扫描等),就不可能回收这些内存。 因此,当指针未知时,无法释放C中的内存。 |
![]() |
5
1
首先,你似乎不明白
而整数可以转换为
然后,您可以通过执行以下操作访问元素:
然后,正如其他人指出的那样,您可以通过调用
你可以这样称呼它:
|
![]() |
6
1
这绝不是对你所做的事情的认可,但这是可能的 假设您知道这些块是连续分配的 . 例如:
因此,如果你有一个指针,并且知道在它之前分配了一组连续的字节,你可以简单地用指针算术来偏移指针。这是非常危险的,不建议使用,但也有可能。 编辑: 我运行了一个测试程序,在我的架构上,它分配了32字节的块,因此ptr1+32==ptr2,ptr2+32=ptr3。它对任何小于或等于24字节的块执行此操作。因此,如果我分配了24个或更少,那么每个ptr将比前一个多32个字节。如果我分配了25个或更多,那么它又分配了16个字节,总共48个字节。 因此,在我的体系结构中,您需要在如何使用指针算术生成指针方面更具创造性,因为它不会像预期的那样工作。 下面是一个适用于所有大小的ptr1、ptr2和ptr3的示例程序 关于我的建筑 .
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 6 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 6 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 6 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 6 月前 |