该程序崩溃,无法找到有关获取数组内容和移动指针的非法操作。哪里不对?在数组中移动指针
#include <iostream>
#include <stdint.h>
using namespace std;
int main(int argc, char ** argv) {
int * p = new int [20];
for(int i=0 ; i<20 ;i++)
{
p[i]=i;
}
for(int i=0 ; i<20 ;i++)
{
printf("%d ",*p);
p++;
}
delete [] p;
return 0;
}
问题:为什么你首先使用'new'?你正在经历很多额外的旋转才能获得你从''p'数组/''std :: vector' /'std :: array'局部到'main'所得到的结果。你已经得到了很多关于如何防止'new' /'delete'崩溃的建议,但是没有人指出你不应该用它们来开始(甚至当你需要类似'新'的功能时,你应该看看'make_shared'和'make_unique',而不是直接使用'new')。 –
@JerryCoffin让我回答这个问题 - 主要是因为大多数C++书籍,资源,课程(甚至是大学的课程)仍然倾向于展示如何在C中实现链表,然后用C++编译器进行编译。人们仍在教导别人如何在“C贫民窟”内感到舒适(就像Bartosz Milewski所说的那样)。 –