#include <stdlib.h>
int main(){
int *array = new int[2];
array[0] = 1;
array[1] = 2;
int ** dp = NULL;
*dp = array;
return 0;
}
当我运行它时,细分故障(核心已转储)。g ++版本是
从/usr/lib/gcc/x86_64-redhat-linux/3.4.5/specs中读取规范配置为:../configure --prefix = / usr --mandir = / usr / share / man --infodir = / usr / share / info --enable-shared --enable-threads = posix --disable-checking --with-system-zlib --enable -__ cxa_atexit --disable-libunwind-exceptions --enable-java-awt = gtk- -host = x86_64-redhat-linux线程模型:posix gcc版本3.4.5 20051201(Red Hat 3.4.5-2)
更改以下语句
int ** dp = new int *;
*dp = array;
甚至您也可以写一个声明而不是上面的两个声明
int ** dp = new int *( array );
也不要忘记释放分配的内存
delete dp;
delete []array;
至于您的代码,那么您尝试取消引用空指针。
考虑到C <stdlib.h>
++中的C标头命名为<cstdlib>
。并且此标头未在您的程序中使用。因此,您可以将其删除。
该程序可能看起来像
#include <iostream>
int main()
{
int *array = new int[2] { 1, 2 };
int ** dp = new int *( array );
std::cout << ( *dp )[0] << '\t' << ( *dp )[1] << std::endl;
delete dp;
delete []array;
return 0;
}
输出是
1 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句