在Visual Studio中,我们都有"baadf00d",在运行时在C++中检查调试器中的变量时看到过"CC"和"CD".
根据我的理解,"CC"仅处于DEBUG模式,以指示内存何时是new()或alloc()并且是单元化的."CD"代表删除或免费内存.我在RELEASE版本中只看过"baadf00d"(但我可能错了).
偶尔会遇到内存泄漏,缓冲区溢出等问题,这些信息会派上用场.
是否有人能够指出何时以何种模式将内存设置为可识别的字节模式以进行调试?
我有
int list[] = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
如何获得大小list?
我知道对于char数组,我们可以strlen(array)用来查找大小,或者'\0'在数组末尾检查.
我尝试sizeof(array) / sizeof(array[0])了一些答案,但它只适用于主?例如:
int size(int arr1[]){
return sizeof(arr1) / sizeof(arr1[0]);
}
int main() {
int list[] = {1, 2, 3};
int size1 = sizeof(list) / sizeof(list[0]); // ok
int size2 = size(list_1); // no
// size1 and size2 are not the same
}
Run Code Online (Sandbox Code Playgroud)
为什么?
我如何遍历数字列表,以及有多少不同的方法可以做到这一点?
我认为会起作用:
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;
int main()
{
int numbers[] = {2, 4, 6, 8};
int i = 0;
for(i=0; i< numbers.size();i++)
cout << "the current number is " << numbers[i];
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在for循环行上遇到错误:
请求部件
'size'中'numbers',其是非类类型的'int[4]'
我有一个这样的C阵列:
double arr[] = {
0.0, 0.1, 0.2, 0.5,
0.1, 0.2, 0.3, 0.4,
0.2, 0.0, 0.1, 0.3
};
Run Code Online (Sandbox Code Playgroud)
获得这样的元素数量是否安全?
int numElements = sizeof(arr)/sizeof(arr[0]);
Run Code Online (Sandbox Code Playgroud)
或者,还有更好的方法?
希望我的问题是明确的和相关的,对指针来说是新的... - 我可以通过引用指向我想要开始复制的数组中第一个插槽位置的指针,一次复制一个数组的整个部分吗?
例如 - 给定一个数组:A [1,2,3,4,5,7,8,3,2,5,1,0,9] - 我想只从n'复制数组的一部分th slot,进入数组B的开头[0 0 0 .....](B的长度与A相同).
我可以使用指针而不是循环一次完成吗?有点像 - 将指针切换到B中的第1个插槽,指针指向A的第n个插槽,B中的第n个插槽指向A中的最后一个插槽?
非常感谢提前!