該程序崩潰,無法找到有關獲取數組內容和移動指針的非法操作。哪裏不對?在數組中移動指針
#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所說的那樣)。 –