异常代码c0000005应用程序崩溃

时间:2016-08-23 07:58:50

标签: c

大家早上好。 我正在开发一个CUDA项目,我需要操作一些使用malloc函数动态创建的2D数组。

我在这里报告了我目前正在处理的文件的整个代码: http://pastebin.com/mcFdH4kQ

当我在生成.exe文件后尝试执行代码时,遇到ACCESS_VIOLATION错误导致应用程序崩溃。可能主要的问题是处理名为setArrayItemAtXY的函数,这要归功于我在预先确定的(x,y)位置将我作为参数传递的矩阵中的给定整数值保存。 / p>

语法有问题吗?这可能是个问题?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:0)

是的,有问题,但没有语法(至少不是直接),而是使用operator precedence

取消引用运算符@NgModule({ imports: [ BrowserModule, routing ], declarations: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { } 的优先级低于数组索引运算符import { Routes, RouterModule } from '@angular/router'; const routes: Routes= [{path: 'welcome', loadChildren: 'app/screens/welcome.module'}]; export const routing = RouterModule.forRoot(routes); 。这意味着*等表达式被解析为[]。这是不正确的。

简单的解决方案是将函数更改为而不是获取指针指针,因为这实际上并未在*array[x * cols + y]函数中使用。只需使用普通指针,然后使用普通*(array[x * cols + y])(不需要取消引用)。

所以将声明更改为:

setArrayItemAtXY

您当然也需要修改对函数的所有调用。

还应该注意,这应该导致编译器抱怨,因为您将值视为指针。如果您没有收到编译器警告,则需要启用更多警告。