大家早上好。
我正在开发一个CUDA项目,我需要操作一些使用malloc
函数动态创建的2D数组。
我在这里报告了我目前正在处理的文件的整个代码: http://pastebin.com/mcFdH4kQ
当我在生成.exe文件后尝试执行代码时,遇到ACCESS_VIOLATION错误导致应用程序崩溃。可能主要的问题是处理名为setArrayItemAtXY
的函数,这要归功于我在预先确定的(x,y)位置将我作为参数传递的矩阵中的给定整数值保存。 / p>
语法有问题吗?这可能是个问题?
提前感谢您的回复。
答案 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
您当然也需要修改对函数的所有调用。
还应该注意,这应该导致编译器抱怨,因为您将值视为指针。如果您没有收到编译器警告,则需要启用更多警告。