相关疑难解决方法(0)

C内存管理

我一直听说在C中你必须真正关注你如何管理记忆.而且我还在开始学习C语言,但到目前为止,我根本不需要做任何内存管理相关活动.我总是想象必须释放变量并做各种丑陋的事情.但事实似乎并非如此.

有人可以给我(带代码示例)一个例子,说明何时需要进行"内存管理"?

c memory

86
推荐指数
5
解决办法
4万
查看次数

有没有办法以编程方式确定C++数组的大小?如果没有,为什么?

这个问题的灵感来自一个类似的问题:delete []"如何"知道操作数数组的大小?

我的问题有点不同: 有没有办法以编程方式确定C++数组的大小?如果没有,为什么? 我看到的每个接受数组的函数也需要一个整数参数来赋予它大小.但正如链接问题指出的那样,delete[]必须知道要释放的内存大小.

考虑这个C++代码:

int* arr = new int[256];
printf("Size of arr: %d\n", sizeof(arr));
Run Code Online (Sandbox Code Playgroud)

这打印" Size of arr: 4",这只是指针的大小.有一些打印256的函数会很好,但我不认为C++中存在一个函数.(同样,问题的一部分是为什么它不存在.)

澄清:我知道如果我在堆栈上声明数组而不是堆(即" int arr[256];"),则sizeof运算符将返回1024(数组长度*sizeof(int)).

c++ arrays pointers memory-management

61
推荐指数
4
解决办法
6万
查看次数

在C代码中捕捉愚蠢错误的任何工具?

我有一个令人讨厌的错字,浪费了我的时间和我的同事的时间,它是这样的:

for (i = 0; i < blah; i++); // <- I had a semi-colon here, that's the bug!
{
  // Some awesome logic here
}
Run Code Online (Sandbox Code Playgroud)

首先,这是非常尴尬的,其次,我不应该重复这一点.我对C比较陌生.在Java中,我想我可以使用FindBugs来捕捉这些错误,我应该用什么工具来代码?皮棉?

c lint findbugs

11
推荐指数
2
解决办法
817
查看次数

标签 统计

c ×2

arrays ×1

c++ ×1

findbugs ×1

lint ×1

memory ×1

memory-management ×1

pointers ×1