Tag: 崩溃

调用free()会导致程序崩溃

我有一个非常奇怪的问题,试图在分配的内存上调用free导致我的程序崩溃。 这是相关的代码: int i, count; char *specifier; char aisle[1]; count = 0; /*Find name of the new item and assign to the name field of new_node…*/ for (i = 0; input[i] != ‘,’; i++){ count++; } specifier = (char*)malloc((count+1)*sizeof(char)); if (specifier == NULL){ printf(“Out of memory. Shutting down.\n”); exit(EXIT_FAILURE); } for (i = 0; input[i] […]

尝试将浮点数读入数组时,scanf崩溃

这是我的代码: double values[8], cumulative[8]; printf(“Enter first decimal number: “); scanf(“%f”, values[0]); printf(“values[0] = %g”, values[0]); 我的问题是scanf语句崩溃程序,第二个printf永远不会执行。 我最初的尝试是用双精度填充数组的每个插槽,但由于这不起作用,我将程序简化为此,但这也不起作用。 我是一个初学者学习C,所以我可能犯了一个我看不见的愚蠢错误。 任何帮助将不胜感激,谢谢! 编辑: 好的,显然我需要在scanf语句中添加一个&符号。 但我认为数组只是指向数组第一个元素的指针? 为什么我必须使用&符号?

strcpy在ios​​7上表现不同

IOS7似乎带有字符串strcpy的新实现(可能是优化)。 之前我能够从数组的任何位置复制字符串,但现在如果我从任何位置开始复制(i%4!= 0)它将崩溃。 为了显示这一点,我在iOS6和7中都运行了这个代码,它在7上崩溃了应用程序: char *x = malloc(1024); strcpy(x, “hello world”); char *x2 = x + 1; strcpy(x, x2); 我究竟做错了什么?

R调用的C代码不断崩溃

下面是我写的C代码的一部分。 函数foo将在R中调用。代码不断导致R崩溃,我将问题缩小到这个outer()函数,该函数用于计算外部和或差。 请注意注释掉的部分:如果我没有注释掉, 如果每个数组包含超过1000个数据点 ,该函数将导致R崩溃。 如果我将其评论出来,我可以计算出明显更长的数组的外部和/差异而没有问题(例如,每个数组超过100000个数据点)。 我想知道问题是什么……谢谢! #include #include #include #include #include void outer(double *x1, double *x2, int *n, int operation, double *output){ int i, j; if(operation==1){ for(i=0; i<*n; i++){ for(j=0; j<*n; j++){ output[(*n)*i+j]=x1[j]+x2[i]; } } } else if(operation==2){ for(i=0; i<*n; i++){ for(j=0; j<*n; j++){ output[(*n)*i+j]=x1[j]-x2[i]; //Rprintf("%d ", (*n)*i+j); //<———–HERE } } } } void […]

在C / C ++中捕获DLL崩溃

我正在从DLL调用函数,如下所示: __declspec ( dllimport ) bool dll_function(…); int main() { […] if (dll_function(…)) { […] } } 在某些情况下,我传递给DLL函数的数据将导致DLL崩溃。 有可能捕获这个,所以我的应用程序也不会崩溃(没有修改不是由我创建的DLL)?

可重复:为什么在C中传递此对象会破坏我的代码?

根据我的理解,C假设所有参数都是int,并返回int。 我想传递这个对象,但我不知道如何和AFAIK的大小相同,但它会中断。 这是可重复的代码。 在testc.c中。 注意:这必须在C文件中。 int test_c1() { return test_c3(test_c2()); } 在testcpp.cpp中 #include using namespace std; struct MyType{ int a, b; }; template struct WrappedPointer { T* lhs; public: void LHS(T*v) { lhs=v; } T* LHS() { return lhs; } WrappedPointer(){} WrappedPointer(T*value) : lhs(value){} WrappedPointer(const WrappedPointer&v) : lhs(v.lhs){} T* operator->() const { return lhs; } […]

为什么这个小C程序会崩溃?

该计划是: #include #include int main(void) { char *a=”abc”,*ptr; ptr=a; ptr++; *ptr=’k’; printf(“%c”,*ptr); return 0; } 问题在于 *ptr=’k’; 线,当我删除它程序正常工作。 但我无法弄清楚原因。

中止陷阱:C程序中的6个

我在C中有一个程序。它成功编译并且运行正常但是在main()结束时,它崩溃并且给了我一个Abort trap: 6错误。 我对如何调试这个没有丝毫的线索。 关于SO与Abort trap: 6有关的几个问题Abort trap: 6错误对我没什么帮助。 一般来说,可能是什么问题? (我现在不愿意发布我的源代码,因为它大约有400行代码。如果我知道要查找什么,我会发布一段特定的代码。) 注意:我正在使用GCC在终端中运行程序。 但是当我在XCode中运行它时,我的程序崩溃,如果我停止它,它以exit code: 9结束exit code: 9 。 这是lldb的输出: Process 1191 stopped * thread #1: tid = 0xa759, 0x00007fff8fa08286 libsystem_kernel.dylib`__pthread_kill + 10, queue = ‘com.apple.main-thread’, stop reason = signal SIGABRT frame #0: 0x00007fff8fa08286 libsystem_kernel.dylib`__pthread_kill + 10 libsystem_kernel.dylib`__pthread_kill + 10: -> 0x7fff8fa08286: jae 0x7fff8fa08290 ; __pthread_kill […]

为什么这段代码会崩溃?

为什么这段代码会崩溃? 在字符指针上使用strcat非法? #include #include int main() { char *s1 = “Hello, “; char *s2 = “world!”; char *s3 = strcat(s1, s2); printf(“%s”,s3); return 0; } 请参考数组和指针给出正确的方法。

Malloc调用崩溃,但在其他地方工作

我想知道是否有人可能对此有任何见解…… 我的程序崩溃了这个电话: void subtract(data* array,data* inverse,int a, int b, int q, int n) { data* arraytomultiply; arraytomultiply = (data *)malloc(sizeof(data*) * n); 数据只保存一个int(为了方便以后切换类型) typedef struct { int value; }data; 我已经尝试了很多改变指针的方法,因为我对它们完全没有信心,但无济于事。 奇怪的是,在程序的早期阶段,同样的调用工作,我为它分配值,并可以打印出来的一切……: data* array; array = (data*)malloc(sizeof(data*) * m * n); // m * n entries 可能有用的一件事(虽然我不知道为什么)是当它早期工作时它在一个void函数中,而当它崩溃时它在一个从算法中调用的函数中。 但是我根本没有看到它会如何影响它,因为我正在尝试做的是不使用任何参数等… 有任何想法吗?