如果我在堆6上创建像素缓冲区10 ....
int * p_buffer = new int [6 * 10]
p_buffer---
|
|
V
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
然后在一个方法中我创建了6个指针,但我没有将它们定义为“new”,我明白这意味着它们存储在堆栈中。我创建了一个像这样的指针数组:
int *p_row[6];
然后我手动将每个p_row指针放在每行的开头,如下所示:
for (int i = 0; i < 6; i++)
{
p_row[i] = p_buffer + (10 * i);
}
现在我们有:
p_buffer---
|
|
V
p_row[0]-->* * * * * * * * * *
p_row[1]-->* * * * * * * * * *
p_row[2]-->* * * * * * * * * *
p_row[3]-->* * * * * * * * * *
p_row[4]-->* * * * * * * * * *
p_row[5]-->* * * * * * * * * *
我想知道,如果在执行此操作之后程序离开此函数并返回main(),我是否可以执行以下操作:
p_row[0] = (set my RGB colours);
我已经了解到,如果在堆栈上创建,在函数(本地范围)中创建的东西将被销毁(不分配或使用'new'关键字)。
离开该函数后,指针是否被破坏?我可以参考一下吗?
我知道这是一种非正统的引用字节的方法,但问题在于指针的机制。整个缓冲区是通过p_buffer分配的,我打算在程序退出后删除它。如果答案显而易见,我很抱歉。
此外,指针数组p_row []将成为Screen类的成员,如果这有所不同。