报错:heap corruption detected
原因及解决措施:若创建包含n项的动态数组,int *a=new int[n];
strcpy(buffer, n),意味着您写入未分配的内存,这将写入strlen(n)+1
字节buffer
,但buffer
只是strlen(n)
字节长(额外的字节是终止\0
)写入额外的字节会导致未定义的行为,并可能破坏堆。
更改为:int *a=new int[n+1];
报错:heap corruption detected
原因及解决措施:若创建包含n项的动态数组,int *a=new int[n];
strcpy(buffer, n),意味着您写入未分配的内存,这将写入strlen(n)+1
字节buffer
,但buffer
只是strlen(n)
字节长(额外的字节是终止\0
)写入额外的字节会导致未定义的行为,并可能破坏堆。
更改为:int *a=new int[n+1];