使用未分配的内存进行调整
Tweaking with unassigned memory
我正在尝试执行以下操作:
char c[] = "programming";
char *p;
*(c-1)='l';
*(c-2)='l';
*(c-3)='l';
*(c-4)='l';
*(c-5)='l';
p=&c[0];
cout<<*(c-1);
只有当我省略p=&c[0];
时,才会打印l
,为什么会这样?CCD_ 3与CCD_。
您认为应该是关系的期望是有根本缺陷的。
这一切都是未定义的。编译器可以进行如此的许多优化,以及其他可以利用语言提供的灵活性的方式,因此您不能用这些东西做出任何假设。
只是不要尝试。
相关文章:
- 访问"std::vector"的保留但未调整大小的内存作为原始内存是否安全?
- 当多个进程使用该段时,Posix 共享内存使用 mremap 调整大小
- 调整结构/字符数组的大小(以减少内存使用)
- 如何使用 std::vector<std::tuple<A,B>> 来管理内存(调整大小、保留,...),但实际上将 As 保留在 B 之前,连续
- 在内存(C 和/或 C++)中创建和管理字节缓冲区,该缓冲区可以根据需要自动调整大小
- 调整窗口内存映射文件的大小,而不会使指针失效
- 在 void getData() 中,如何访问由 void* 指针重新调整的内存位置
- 调整 C++ std/boost iostream 以提供对内存块的循环写入
- 当“std::vector”调整内存大小时,避免使用任何自动变量
- 在循环中调整内存访问
- 调整动态数组大小时内存泄漏
- 调整动态字符串的大小会导致内存泄漏
- C++ 调整 2D 矢量内存大小错误
- 是否可以在不使指针无效的情况下调整/重新分配大块内存
- 内存访问错误-矢量调整大小
- OpenCV在循环中调整大小-内存泄漏
- 当只使用600 MB内存时,调整QByteArray的大小会抛出std::bad_alloc
- 我可以用shmctl调整Linux共享内存的大小吗?
- 使用 ASSERT " _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) "调整动态分配的内存C++的大小
- c++ Vector catch调整内存泄漏大小