【发布时间】:2016-07-14 22:23:02
【问题描述】:
我需要为 GPU 编程编写一个自定义 malloc。这会正常工作吗?
void* malloc(int size, int* bytesUsed, uchar* memory){
int startIdx = (*bytesUsed);
(*bytesUsed) += size;
return (void*)(memory+startIdx);
}
我是 C 编程的新手,我可能犯了与指针算术相关的错误或其他什么...想法是 bytesUsed 为您提供第一个空闲地址的 memory 的索引,因此您将其递增size 然后将递增的索引作为指针返回。
【问题讨论】:
-
当你需要
free时会发生什么? -
如果你是 C 新手,为什么要在你能走路之前就跑呢?问题的答案是否定的
-
@EliKorvigo 是的,我看到了;他们提出的解决方案是将指针传递给一个大数组并手动管理里面的内存。这就是我想要做的。
-
@EdHeal 我不需要免费,也不需要担心用完:这是一个非常具体的一次性使用。我只需要不安全的 malloc 而不需要 free (不安全的意思是如果我过去,我对段错误很好,因为我知道我不会过去)。我要问的是,我写的内容是否足够好?
-
应该是
return memory+startIdx;
标签: c pointers memory-management pointer-arithmetic