#include<stdio.h>
int main()
{
char *ch;
int n=10;
gets(ch);
puts(ch);
printf("%d\n",n);
}
#include<stdio.h>
int main()
{
char *ch;
int n=10;
gets(ch);
printf("%d\n",n);
puts(ch);
}
Run Code Online (Sandbox Code Playgroud)
在第一个中,分割错误发生在print(n)处,而第二个分支错误发生在puts(ch)处.如果在声明n之后也使用print(n),则不会发生错误.
我不得不做一个涉及cv :: Ptr(指针)的技巧,以便能够调用特定的函数,但是当程序执行后尝试释放内存时,程序似乎有一些问题,因为发生了分段错误.
1.Code:
SurfDescriptorExtractor extractor1;
Ptr<DescriptorExtractor> extractor = &extractor1;
FlannBasedMatcher matcher1;
Ptr<DescriptorMatcher> matcher = &matcher1;
Run Code Online (Sandbox Code Playgroud)
2.错误:
Conditional jump or move depends on uninitialised value(s)
==23559== at 0x56585C0: ____strtod_l_internal (strtod_l.c:1659)
==23559== by 0x5653FAE: strtod (strtod.c:70)
==23559== by 0x41425B1: icv_strtod(CvFileStorage*, char*, char**) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559== by 0x415875F: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559== by 0x4158BA4: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559== by 0x41593F7: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, int) (in /usr/local/lib/libopencv_core.so.2.4.2)
==23559== by 0x41593F7: icvYMLParseValue(CvFileStorage*, char*, CvFileNode*, int, …Run Code Online (Sandbox Code Playgroud) 我不确定如何初始化Objective-C类中的各种属性.请假设我在你的答案中是Objective-C的新用户......
我有以下课程:
考试班
@interface Test : NSObject
@property (nonatomic, strong) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
TestManager类
@interface TestManager : NSObject
@property (nonatomic, strong) NSMutableArray *tests; // array of Test objects (array size unknown until runtime)
@end
Run Code Online (Sandbox Code Playgroud)
控制器类
@interface TestController : NSObject
@property (nonatomic, strong) TestManager *aManager;
-(void)initManager;
-(void)doSomething;
@end
Run Code Online (Sandbox Code Playgroud)
我想要一个像initManager被调用的方法:
-(void)initManager
{
// how can I init the aManager which will have an array of Test objects
}
Run Code Online (Sandbox Code Playgroud)
它将自动分配一个对象数组,以存储在manager类中,这样我就可以执行以下操作:
-(void)doSomething
{
NSString *name = ((Test *)[self.aManager.tests objectAtIndex:0]).name;
}
Run Code Online (Sandbox Code Playgroud)
我甚至不确定initManager是否是正确的使用方法 - …
我一直收到检测到Heap Corruption的错误.我在这里已经阅读了几个问题,但我无法在我的代码中找到导致这种情况的原因.我正在尝试创建一个2d数组,它将保存从文本文件中读取的矩阵.
// Create a 2d matrix to hold the matrix (i = rows, j = columns)
matrix = new int*[cols];
for(int i = 0; i <= cols; i++) {
matrix[i] = new int[rows];
}
// Populate the matrix from the text file
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
inputFile >> matrix[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
我的析构函数是:
for(int i = 0; i <= cols; i++) {
delete[] matrix[i]; …Run Code Online (Sandbox Code Playgroud) 我习惯于在顶部块中声明范围中的每个变量以获得代码可读性.我怀疑函数范围内未添加到文档正文的节点会使空间混乱,并降低性能.他们会怎么样?一般而言,在函数范围内创建的变量会发生什么?执行功能后它们会被销毁吗?我是否需要担心释放内存?在一个范围的最顶层块声明变量是一个好习惯,还是只在需要时或在某些条件为真时才在现场声明变量?这有助于提高运行时性能吗?
假设这样的函数:
function myfunc() {
var someNode = document.createElement('div');
if(someCondition) { // add the node only if some condition is true
document.body.appendChild(someNode);
}
Run Code Online (Sandbox Code Playgroud)
VS这样的功能:
function myfunc() {
if(someCondition) { // create and add the node only if some condition is true
var someNode = document.createElement('div');
document.body.appendChild(someNode);
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法可以在我的C#应用程序中监视内存消耗?我想根据程序使用的内存量动态更改变量.
我有一些代码完成对数据库的查询,并在将数据写入文件之前暂时保存这些数据.我还有一些代码,允许用户手动更改数据从内存中转储到哪个点并写入文件,但我希望程序自动处理.
例如; 如果我的进程达到700,000K内存使用量(如从中查看Task Manager,然后递减整数并继续处理.
谢谢,埃里克
我刚刚编写了一些经典的分治算法,我提出了以下问题:(更多是好奇心)
不可否认,在许多情况下,分而治之算法比传统算法更快; 例如,在快速傅里叶变换中,它提高了从N ^ 2到Nlog2N的复杂度.然而,通过编码,我发现,由于"划分",我们有更多的子问题,这意味着我们必须创建更多的容器并在子问题上分配更多的记忆.考虑一下,在合并排序中,我们必须在每次递归中创建左右数组,而在快速傅里叶变换中,我们必须在每次递归中创建奇数和偶数数组.这意味着,我们必须在算法期间分配更多的内存.
所以,我的问题是,实际上,比如在C++中,当我们还必须增加内存分配的复杂性时,像分而治之类的算法真的会赢吗?(或者内存分配根本不需要运行时间,而且成本是零?)
谢谢你的协助!
我有以下两个功能.函数get_string_data(line)mallocs一个字符串并返回它.后来我像这样使用它:
char *get_string_data(char *) {
char *sec_tok, *result;
Split *split;
split = split_string(line, ' ');
sec_tok = split -> tail;
if (starts_with_char(sec_tok, '\"') && ends_with_char(sec_tok, '\"')) {
result = (char *) malloc(strlen(sec_tok) + 1);
strcpy(result, sec_tok);
free(split);
result++;
*(result + (strlen(result) - 1)) = '\0';
return result;
}
free(split);
return NULL;
}
void handle_string_instr(char *line) {
char* data = get_string_data(line);
...a few lines later, after I used the data...
free(data);
... end of the world happens here...
} …Run Code Online (Sandbox Code Playgroud) 嗨所以我的应用程序中存在相当大的内存泄漏,我认为这是由我的Runnables造成的.这是我使用的Runnables骨架的一个例子:
private Runnable randomAlienFire = new Runnable() {
public void run() {
/*A Bunch
of computations
*/
mainHandler.removeCallbacks(randomAlienFire);
mainHandler.postDelayed(randomAlienFire, number );
}
Run Code Online (Sandbox Code Playgroud)
当我切换活动时,我打电话mainHandler.removeCallbacksAndMessages(null);,thread.randomAlienFire = null;但我仍在泄漏整个活动.所以我的问题是,这个基本骨架中是否存在导致内存泄漏的问题?这可能是处理程序调用自身的事实吗?
我正在使用SBJson来解析JSON字符串.
像这样:
NSDictionary *dict = received_notification.object;
Run Code Online (Sandbox Code Playgroud)
我应该用吗?
NSString *name = [[dict valueForKey:@"name"] copy];
Run Code Online (Sandbox Code Playgroud)
要么
NSString *name = [dict valueForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)
我认为第一种方法复制NSString,之后可以发布dict.
但是对于第二个表达式"name"保留了对dict的引用,它无法释放.
我错了吗?