`
tinggo
  • 浏览: 44735 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数组下标为-1不会crash

阅读更多
发现在栈上的指针可以随意乱动,这就会导致出现“写坏内存”的情况。今天大开眼界。
#include <iostream>
using namespace std;

struct TestClass
{
	int* pointer;
};

int main()
{
	TestClass* a =new TestClass();
	a->pointer = new int[10];
	std::cout<<a->pointer[-1]<<endl;
	return 0;
}


分享到:
评论

相关推荐

    多维数组下标计算 多维数组下标计算 多维数组下标计算

    LOC(aijk)=LOC(a111)+[(i-1)×n×p+(j-1)×p+k-1]×d 下界不为 1 的二维数组的地址计算公式: LOC(aij)=LOC(ac1c2)+[(i-c1)×(d2-c2+1)+j-c2]×d 下界为 0 的二维数组的地址计算公式: LOC(aij)=LOC(a00)+[i×...

    C++ 数组 多维数组 -- 二维数组

    在 C++ 中,定义数组的语法为:`储存类型符 数据类型符 数组名 [ 数组长度 ][ 数组长度 ]`。例如,`static int a[3][4]` 定义了一个静态的整型二维数组 `a`,它有 3 行 4 列。 在 C++ 中,我们可以使用多种方式来...

    java 数组下标越界异常(ArrayIndexOutOfBoundsException)

    arr[3]`或`arr[-1]`。 2. **在循环中不正确地设置索引**:例如,在for循环中,如果步长设置不当,可能会导致超出索引范围。 3. **数组元素删除后未更新索引**:在删除数组元素后,如果继续使用原有的索引,可能会...

    二维数组下标的重载

    二维数组下标的重载,值得C++初学者的学习

    第7章 数组-9数组下标越界问题分析1

    数组的下标是从0开始的,因此一个长度为N的一维数组,其有效的下标范围是0到N-1。如果尝试访问下标小于0或者大于等于N的元素,就会发生下标越界错误。这种错误在编译期间通常不会被检测出来,因为编译器默认程序员...

    7.数组元素做数组下标.txt

    7.数组元素做数组下标.txt

    如何计算多维数组的地址----数据结构.pdf

    [0] …… [b-1] 若求1jja在内存中的存储位置,我们可以根据下标的变化分段来计算。前共有j段,每段b个存储单元,即jb。因此1jja的存储地址为: LOC(j) = L × (j - 1) 其中L为基本类型数据的字节数。 二维数组的...

    VBA动态修改数组行下标方法.txt

    VBA动态修改数组行下标方法.txt

    VB 数组下标说明实例

    数组的下标是用于访问数组元素的索引,通常是从0开始或从1开始,这取决于编程语言的约定。在VB中,数组的下标默认从0开始,但这可以通过设置Option Base语句来改变。 ### 数组的声明 在VB中,声明数组的基本语法是...

    【力扣刷题】数组-链表-哈希-双指针

    二分查找的前提条件是:数组为有序数组,数组中无重复元素。(因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。) 二分查找法的实现可以使用两种方式:左闭右闭和左闭右开。左闭右闭方式的实现...

    C语言编译之数组排序--选择排序

    i&lt;n-1;i++)`,因为最后一个元素的位置已经确定,无需再进行比较。 - **内层循环**:`for(j=i+1;j;j++)`,从当前位置的下一个元素开始比较。 - **记录最小值索引**:`k` 用来记录最小值的索引,初始时假设当前元素...

    数组实现线性表-VS2015.zip_C++

    7. **效率分析**:数组实现线性表的优点在于随机访问高效,时间复杂度为O(1)。但插入和删除操作在非末尾位置时,需要移动元素,时间复杂度为O(n)。这与链表实现的线性表相比,插入和删除在首尾位置具有优势。 8. **...

    树状数组-01-第11天知识点回顾.ev4.rar

    辅助数组C[i]表示原数组中从下标i到i+2^k-1(其中k是使得2^k 的最小整数)这段区间元素的某种属性之和,如求和、最大值或最小值等。 二、初始化与构建 初始化时,树状数组通常被设置为原数组的前缀和,即C[i] = A[i...

    matlab 三维 数组 多维数组-创建多维数组-使用索引 算法开发、数据可视化、数据分析以及数值计算 Matlab课程

    例如,`A = repmat([1 2 3]', [3 4, 5])`将创建一个3x4x5的数组,其中每一层都是[1 2 3]的重复。 3. 数组拼接:使用`cat`函数可以将多个二维或三维数组沿某一维度拼接在一起,形成更大的多维数组。 在操作三维数组...

    数组下标法求众数 众数求解

    2. 遍历原数组:对于原数组中的每个元素,将其作为计数数组的下标,将对应的计数数组元素加1。这样,计数数组的每个元素就表示了原数组中对应值的出现次数。 3. 找众数:遍历计数数组,找出出现次数最多的元素及其...

    第七章-数组-数据结构与数组的概念-影响程序设计的因素优秀文档.ppt

    * 只有一个下标的数组称为一维数组,二维数组、三维数组等。 一维数组的定义和引用: * 一般形式:类型符 数组名[常量表达式]; * 例如:int a[10];float b[10]; * 数组名的命名规则与变量相同。 * 常量表达式...

    易语言取数组中重复文本下标

    在编程领域,处理数组是常见的任务之一,尤其是在易语言这种专为中文用户设计的编程语言中。本篇文章将深入探讨如何在易语言中利用源码查找并获取数组中重复文本的下标,以及如何实现去除数组中的重复元素。 首先,...

    数组中的两数之和返回数组下标

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    第七章-数组数据结构与数组的概念-影响程序设计的因素优秀文档.ppt

    引用的一般形式为:数组名[下标],例如:a[0]=50; a[1]=100; a[2]=a[0]+a[1]。 数组的初始化 在定义数组的同时给数组赋初值。例如:int a[10]={0,1,2,3,4,5,6,7,8,9}; int a[10]={0,1,2,3,4}; int a[]={0,1,2,3,4}...

    数组和指针-通俗易懂-很应该看看

    在表达数组元素时,指针可以带下标,如`p[i]`,这等价于`*(p+i)`,它表示的是`p`所指位置加上`i`后指向的元素的值。这意味着,如果你有`p=a+5`,那么`p[2]`就等同于`*(p+2)`,即`a[7]`的值。同样地,`p[-3]`表示`p`...

Global site tag (gtag.js) - Google Analytics